|
DiosNosLibre.com Foro para forros
|
Ver tema anterior :: Ver siguiente tema |
Autor |
Mensaje |
z_killemall Batido, no revuelto
Registrado: 06 Ene 2007 Mensajes: 1519 Ubicación: Sentado en una silla hamaca en la puerta de una cabaña en el bosque con una escopeta en la mano
|
Publicado: Vie Ene 18, 2008 12:49 pm Título del mensaje: "99 Bottles of Beer on the wall" + Programación? |
|
|
http://www.99-bottles-of-beer.net/
En fin, es una página en la que te muestran como escribir la clasica canción en 1150 lenguajes de programación. La verdá no sabÃa que hubiera tantos.
Ejemplos:
En C++:
Código: | #include <iostream>
using namespace std;
template<bool small, int I>
struct pretty_printer;
#define SMALL_PRETTY_PRINTER(num, string) \
template<>\
struct pretty_printer<true, num>\
{\
static void print()\
{\
cout << string;\
}\
};
SMALL_PRETTY_PRINTER(0, "No")
SMALL_PRETTY_PRINTER(1, "One")
SMALL_PRETTY_PRINTER(2, "Two")
SMALL_PRETTY_PRINTER(3, "Three")
SMALL_PRETTY_PRINTER(4, "Four")
SMALL_PRETTY_PRINTER(5, "Five")
SMALL_PRETTY_PRINTER(6, "Six")
SMALL_PRETTY_PRINTER(7, "Seven")
SMALL_PRETTY_PRINTER(8, "Eight")
SMALL_PRETTY_PRINTER(9, "Nine")
SMALL_PRETTY_PRINTER(10, "Ten")
SMALL_PRETTY_PRINTER(11, "Eleven")
SMALL_PRETTY_PRINTER(12, "Twelve")
SMALL_PRETTY_PRINTER(13, "Thirteen")
SMALL_PRETTY_PRINTER(14, "Fourteen")
SMALL_PRETTY_PRINTER(15, "Fifteen")
SMALL_PRETTY_PRINTER(16, "Sixteen")
SMALL_PRETTY_PRINTER(17, "Seventeen")
SMALL_PRETTY_PRINTER(18, "Eighteen")
SMALL_PRETTY_PRINTER(19, "Nineteen")
#undef SMALL_PRETTY_PRINTER
template<int ones>
inline void
print_ones();
#define ONES_PRINTER(ones, string) \
template<> \
inline void \
print_ones<ones>() \
{\
cout << string;\
}
ONES_PRINTER(0, " ")
ONES_PRINTER(1, " one")
ONES_PRINTER(2, " two")
ONES_PRINTER(3, " three")
ONES_PRINTER(4, " four")
ONES_PRINTER(5, " five")
ONES_PRINTER(6, " six")
ONES_PRINTER(7, " seven")
ONES_PRINTER(8, " eight")
ONES_PRINTER(9, " nine")
#undef ONES_PRINTER
template<int tens>
inline void
print_tens();
#define TENS_PRINTER(tens, string) \
template<> \
inline void \
print_tens<tens>() \
{\
cout << string;\
}
TENS_PRINTER(2, "Twenty")
TENS_PRINTER(3, "Thirty")
TENS_PRINTER(4, "Forty")
TENS_PRINTER(5, "Fifty")
TENS_PRINTER(6, "Sixty")
TENS_PRINTER(7, "Seventy")
TENS_PRINTER(8, "Eighty")
TENS_PRINTER(9, "Ninety")
#undef TENS_PRINTER
template<int I>
struct pretty_printer<false, I>
{
static void print(){
print_tens<(I - I%10)/10>();
print_ones<(I%10)>();
}
};
template<int I>
void pretty_print()
{
pretty_printer<(I<20), I>::print();
}
template<int I>
inline void
BottlesOfBeer()
{
pretty_print<I>();
cout << " bottles of beer" ;
}
template<>
inline void
BottlesOfBeer<1>()
{
pretty_print<1>();
cout << " bottle of beer" ;
}
template<int I>
inline void
BottlesOfBeerOnTheWall()
{
BottlesOfBeer<I>();
cout << " on the wall";
}
template<int I>
inline void stanza()
{
BottlesOfBeerOnTheWall<I>();
cout << ",\n";
BottlesOfBeer<I>();
cout <<",\n";
}
template<int I>
inline void bridge()
{
cout << "Take one down, pass it around," << endl;
BottlesOfBeerOnTheWall<I-1>();
cout <<",\n";
}
template<>
inline void bridge<0>()
{
cout << "Go to the store and buy some more," << endl;
BottlesOfBeerOnTheWall<99>();
}
template<int I>
inline void verse()
{
stanza<I>();
bridge<I>();
}
template<int I>
inline void sing ()
{
verse<I>();
cout << endl;
sing<I-1>();
}
template<>
inline void sing<0> ()
{
verse<0>();
}
int main () {
sing<99>();
} |
En PHP:
Código: | <?php
/**
* One bottle left exception
*
* @author Dave Marshal
* @since 22/09/2005
* @package Bottles
*/
class LastBottleException extends Exception {}
/**
* Out of bottles exception
*
* @author Dave Marshal
* @since 22/09/2005
* @package Bottles
*/
class OutOfBottlesException extends Exception {}
/**
* Wall Class
*
* @author Dave Marshal
* @since 22/09/2005
* @package Bottles
*/
class Wall {
/**
* Collection of Bottles
*/
private $bottle = array();
/**
* Wall Constructor
*
* @param int $numberOfBottles The number of bottles on this wall
*/
public function __construct($numberOfBottles=99)
{
$this->addBottles($numberOfBottles);
}
/**
* Wall Desctructor
*/
public function __Destruct() {}
/**
* Get next bottle
*
* @param boolean $force Force the function to return the last bottle
* @returns Bottle
* @throws OutOfBeerException
*/
public function getNextBottle($force = FALSE)
{
if (count($this->bottle) > 1) return array_pop($this->bottle);
else if (count($this->bottle)==1)
{
if ($force) return array_pop($this->bottle);
else throw new LastBottleException();
}
else throw new OutOfBottlesException();
}
/**
* Get number of beers left on the wall
*
* @return int
*/
public function getNumberOfBottles()
{
return count($this->bottle);
}
/**
* Add more bottles
*
* @param int $numberOfBottles
*/
public function addBottles($numberOfBottles)
{
for ($i=0;$i<$numberOfBottles;$i++)
{
$this->bottle[] = new Bottle();
}
}
}
/**
* Bottle Class
*
* @author Dave Marshal
* @since 22/09/2005
* @package Bottles
*/
class Bottle {
/**
* Bottle Constructor
*/
public function __construct() {}
/**
* Bottle Destructor
*/
public function __destruct() {}
}
$wall = new Wall(99);
$continue = TRUE;
while ($continue)
{
try {
$bottlesLeftBefore = $wall->getNumberOfBottles();
$bottle = $wall->getNextBottle();
$bottlesLeftAfter = $wall->getNumberOfBottles();
echo $bottlesLeftBefore." bottles of beer on the wall, ".$bottlesLeftBefore." bottles of
beer.\n";
echo "Take one down and pass it around, ".$bottlesLeftAfter." bottles of beer on the wall.\n\n";
}
catch (LastBottleException $oneLeft)
{
$bottle = $wall->getNextBottle(TRUE);
echo "1 bottle of beer on the wall, 1 bottle of beer.\n";
echo "Take one down and pass it around, no more bottles of beer on the wall.\n\n";
}
catch (OutOfBottlesException $out)
{
echo "No more bottles of beer on the wall, no more bottles of beer.\n";
echo "Go to the store and buy some more, ";
$wall->addBottles(99);
echo $wall->getNumberOfBottles()." bottles of beer on the wall.\n\n";
$continue=FALSE;
}
}
?> |
En fin, se entiende lo que digo... _________________
|
|
Volver arriba |
|
|
leoh Ender el Genocida
Registrado: 31 Jul 2005 Mensajes: 3398 Ubicación: Montevideo, Uruguay
|
Publicado: Vie Ene 18, 2008 2:50 pm Título del mensaje: Re: "99 Bottles of Beer on the wall" + Programació |
|
|
z_killemall escribió: | En fin, se entiende lo que digo... |
Ehh... no... no entendi un culo.
La página no anda, me da error 403 - Forbidden. _________________ Me aburrió mi firma anterior. Ahora no tengo firma. |
|
Volver arriba |
|
|
z_killemall Batido, no revuelto
Registrado: 06 Ene 2007 Mensajes: 1519 Ubicación: Sentado en una silla hamaca en la puerta de una cabaña en el bosque con una escopeta en la mano
|
Publicado: Vie Ene 18, 2008 4:03 pm Título del mensaje: |
|
|
Eh? hace un par de horas andaba la página, me cagaron!!
Deben estar de actualizacion o algo por el estilo, probá mas tarde.
En fin, el rollo si no queda claro es el siguiente:
La canción "99 bottles on the wall" es como "un elefante se columpiaba sobre la tela de una araña" pero arranca en 99 y termina en el cero, en el que se vuelve al 99 y la cancion vuelve a empezar. Asà una y otra vex hasta la eternidá.
Del 99 al 1 el asunto es asi:
<number> bottles of beer on the wall
<number> bottles of beer!
You take one down, and pass it around
<number - 1> bottles of beer on the wall!
Cuando llegás al 1 cambia la letra:
No bottles of beer on the wall!
No bottles of beer!
Go to the store and buy some more (or Go to the store and steal some more)
99 bottles of beer on the wall!
Y empieza todo de vuelta.
Como se imaginarán, escribir la cancion serÃa interminable, por eso la idea es escribir un programa que te muestre la interminable letra. La página trata de escribir el programa en la mayor cantidad de lenguajes de programación disponibles. Por el momento son 1150 y siguen creciendo. _________________
|
|
Volver arriba |
|
|
leoh Ender el Genocida
Registrado: 31 Jul 2005 Mensajes: 3398 Ubicación: Montevideo, Uruguay
|
Publicado: Vie Ene 18, 2008 4:45 pm Título del mensaje: |
|
|
apesta! _________________ Me aburrió mi firma anterior. Ahora no tengo firma. |
|
Volver arriba |
|
|
Ichigo Ender el Genocida
Registrado: 05 Ago 2005 Mensajes: 3794 Ubicación: En una embarcacion oscura cerca de la costa con un rifle Sniper apuntando a la playa un 2 de Febrero
|
Publicado: Vie Feb 01, 2008 7:38 am Título del mensaje: |
|
|
topic al pedo.
LOCK _________________ My name is God, James God. |
|
Volver arriba |
|
|
|
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
Powered by Tovvers
|