Mostrando entradas con la etiqueta doodle. Mostrar todas las entradas
Mostrando entradas con la etiqueta doodle. Mostrar todas las entradas

5000 Elefantes - Small Basic

Sigo con la nostalgia de los 80's... not...

De hecho, aun cuando el nombre suene similar, Small Basic tiene muy poco que ver con BASIC.  La primera version estable fue publicada en el 2011, lo que lo convierte en un lenguaje relativamente nuevo, al contrario de BASIC, que data de finales de los 60's y tuvo su auge durante la decada de los 80's.


'patomil elefantes
'jon tohrs
'send me money -_-

'Variables
elefantes = 1
one = " elefante"
more = " elefantes"
col = "se columpiaba"
cols = "se columpiaban"
ve = "como veia"
ves = "como veian"
va = "fue a llamar"
vas = "fueron a llamar"

'Loop
For elefantes = 1 To 5000 Step 1
  If elefantes  = 1 Then
     TextWindow.WriteLine(elefantes + one)
     TextWindow.WriteLine(col)
     TextWindow.WriteLine("sobre la tela")
     TextWindow.WriteLine("de una arana")
     TextWindow.WriteLine(ve)
     TextWindow.WriteLine("que resistia")
     TextWindow.WriteLine(va)
     TextWindow.WriteLIne("a otro elefante")
     TextWindow.WriteLIne("")
   Else 
     TextWindow.WriteLine(elefantes + more)
     TextWindow.WriteLine(cols)
     TextWindow.WriteLine("sobre la tela")
     TextWindow.WriteLine("de una arana")
     TextWindow.WriteLine(ves)
     TextWindow.WriteLine("que resistia")
     TextWindow.WriteLine(vas)
     TextWindow.WriteLIne("a otro elefante")
     TextWindow.WriteLIne("")
     EndIf
   EndFor
   
'Fin   
TextWindow.WriteLIne("y asi hasta el infinito...")

5000 elefantes - Windows NT Batch Script

Version en batch de la cancion infantil.

Esta, en particular, es batch de Windows NT, que no es exactamente igual que MS-DOS batch, o 4DOS batch.

Los archivos batch son scripts de DOS/Windows, ejecutados por el inteprete (cmd.exe o command.com).


:: cucomil elefantes
:: jon tohrs
:: send me money -_-

@echo off
setlocal enabledelayedexpansion

for /l %%* in (0, 1, 4999) do (
   set number=%%*
   set /a number=!number!+1
   if !number! EQU 1 (
      set elefante=elefante
 set columpiaba=columpiaba
 set veia=veia
 set fue=fue
   ) else (
         set elefante=elefantes
         set columpiaba=columpiaban
  set veia=veian
  set fue=fueron
      )

   echo !number! !elefante!
   echo se !columpiaba!
   echo sobre la tela
   echo de una arana
   echo como !veia!
   echo que resistia
   echo !fue! a llamar
   echo a otro elefante 
   echo.
)

echo y asi hasta el infinito...
:end

5000 Elefantes - Logo

La tortuga inteligente...

Logo aparecio por primera vez en 1967, y es un lenguaje de programacion de alto nivel, utilizado principalmente con fines didacticos, ya que es de facil aprendizaje, y tiene buenas capacidades graficas.

Para ejecutar el codigo hace falta un interprete, como MSWLogo, y se invoca con el comando "sing 1".


;tortamil elefantes
;jon tohrs
;send me money -_-

to elefante :i
    if :i = 1 [output [1 elefante]]
    output se :i [ elefantes]
end

to verse :i
    pr (se elefante :i)
    ifelse :i=1 [pr [se columpiaba]] [pr [se columpiaban]]
    pr [sobre la tela]
    pr [de una arana]
    ifelse :i=1 [pr [como veia]] [pr [como veian]]
    pr [que resistia]
    ifelse :i=1 [pr [fue a llamar]] [pr [fueron a llamar]]
    pr [a otro elefante]
    pr []
end

to sing :i
    if :i = 5001 [print [y asi hasta el infinito...]]
    if :i = 5001 [stop]
    verse :i
    sing :i + 1
end

5000 Elefantes (QBASIC)

Version en QBASIC de la cancion infantil. 

Ultimamente me ha dado por usar MS-DOS 7.1, que fue la ultima version del popular sistema operativo, incluida con Windows 95, hace 24 años.

 Normalmente soy usuario de Linux, pero jugar Commander Keen en Dosbox no es lo mismo...




REM kilos de elefantes
REM by jon tohrs
REM send me money -_-

FOR x = 1 TO 5000
IF x = 1 THEN
a$ = " "
c$ = " "
r$ = " "
ELSE
a$ = "s "
c$ = "n "
r$ = "ron "
END IF
PRINT x; "elefante"; a$
SLEEP 1
PRINT "se columpiaba"; c$
SLEEP 1
PRINT "sobre la tela"
SLEEP 1
PRINT "de una arana"
SLEEP 1
PRINT "como veia"; c$
SLEEP 1
PRINT "que resistia"
SLEEP 1
PRINT "fue"; r$; "a llamar"
SLEEP 1
PRINT "a otro elefante"
SLEEP 1
PRINT
NEXT x
PRINT "y asi hasta el infinito..."

5000 Elefantes (Ruby)

Version no muy legible en Ruby de la cancion infantil.  Ruby se distingue por ser, generalmente, facil de leer y entender.  Que este codigo no sea muy legible es culpa mia, solamente.  Ruby es inocente.


#!/usr/bin/env ruby

# muchosmuchosmuchos elefantes
# jon tohrs
# send me money -_-

def fants(n)
 n == 1 ? "#{n} elefante" : "#{n} elefantes"
end

def cmp(n)
 n == 1 ? "columpiaba" : "columpiaban"
end

def vrn(n)
 n == 1 ? "veia " : "veian "
end

def ir(n)
 n == 1 ? "fue" : "fueron"
end

@count = 0

@count.upto(4999) {
@count = @count + 1
 
puts <<ELEFANTEISHON
#{fants(@count)}
se #{cmp(@count)}
sobre la tela
de una araña
como #{vrn(@count)}
que resistia
#{ir(@count)} a llamar
a otro elefante...
--
ELEFANTEISHON
}
puts "y asi hasta el infinito..."

5000 Elefantes (Processing.js - Dirty Fix)

No me gusta dejar las cosas a medias, asi que no quede conforme con los 2499 elefantes.  Esta es una solucion algo cochina, pero igual, funciona.  El problema radica en el tamaño de la ventana que processing puede dibujar.  Asi que dividi el codigo en 5 partes, para llegar a 5000 elefantes, de mil en mil.  El tamaño de la ventana se ha reducido bastante, y solo fue cuestion de implementar algunos cambios menores.

Parece ser que a dropbox todavia no le gustan los caracteres especiales. Sigue dandome cajitas magicas de misterio y asombro en lugar de eñes... :)


-OR-

Try It

1000 Elefantes

// 1000 Elefantes
// jon tohrs
// send me money -_-
// window geometry
size (580, 12020, P2D);
background (#740000);

// variables
String a = "s";
String b = "n";
String c = "ron";
int e = 1;

// strings
for (int i=1; i<1001; ) {
  if (i == 1) {a = "";} else {a = "s";}
  if (i == 1) {b = "";} else {b = "n";}
  if (i == 1) {c = "";} else {c = "ron";}
  String w = (i + " elefante" + a);
  String x = (" se columpiaba" + b);
  String y = ("Como veia" + b);
  String z = ("fue" + c + " a llamar");
  e++; 
  i++;
  textSize(10);
  text (w + x + " sobre la tela de una araña.  " + y + " que resistia, " + z + " a otro elefante...", 10, 12*e);  // output
}

El codigo anterior muestra de 1 a 1000 elefantes. Es un poco mas largo, ya que tiene que determinar si el resultado sera plural or singular.

El codigo que sigue es mas sencillo, y se repite hasta el final.
2000 - 5000 Elefantes
// 2000 Elefantes
// jon tohrs
// send me money -_-
// window geometry
size (580, 12035, P2D);
background (#740000);

// variables
int j = 1;

// strings
for (int i=1000; i<2001; ) {
  String a = (i + " elefantes");
  String b = (" se columpiaban");
  String c = (" sobre la tela");
  String d = (" de una araña.  ");
  String e = ("Como veian");
  String f = (" que resistia,");
  String g = (" fueron a llamar");
  String h = (" a otro elefante...");
  j++; 
  i++;
  textSize(10);
  text (a + b + c + d + e + f + g + h, 10, 12*j);
}

No era realmente necesario separar todo en strings. El resultado habria sido el mismo de incluir todo en "text", pero no me gustan las lineas muy largas. Dividirlo en strings lo hace mas legible, al menos para mi.

Para seguir contando elefantes, solo hay que hacer otros 3 archivos iguales. Cambiando el siguiente codigo:

for (int i=1000; i<2001; )

Por el siguiente:

for (int i=2000; i<3001; )


for (int i=3000; i<4001; )


for (int i=4000; i<5001; )

Y asi es como dividimos el codigo en partes iguales, de manera que podamos llegar sin problemas a los 5000 elefantes.

Una vez solucionado el problema del tamaño, todavia tenemos que lidiar con el problema de la presentacion. La solucion no es muy elegante, pero funciona: habiendo 5 archivos pde con un fragmento de codigo cada uno, utilizo un archivo html distinto para cada uno, y los relaciono todos con una serie de links.

pagina de inicio
 <!DOCTYPE html>  
      <head>  
           <meta http-equiv="content-type" content="text/html; charset=utf-8" />  
           <title>5000 Elefantes - Processing - jon tohrs</title>  
           <link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAQAAVzABAEAjBQAaDwYAWjUGAGE6CQBrQQ0ATS8PAFhAJwBUQC8AbFI6AHVXPACBZk4A4NrWAPb19QAAAAAAAMmZmZmZmgAJIwAAAAAAcMIjPjA+PjAKpxIuMDMzMAm0Ii4zMzMACaIiLt3dMAAJtyIuIzPQAAm0Un5yM+IzKLRkfncy4iIotRF+dyLkIiq0QX53F+EiGrQUTkd34iIatEVu7u5iIVrBVVRBRFRVbAtGZGZla2uwAMu7u7u8vADAAwAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIABAADAAwAA" />  
           <meta name="Generator" content="Processing" />  
           <!-- - - - - - - - - - - - - - - - - - - - -   
           +  
           +  Wondering how this works?   
           +  
           +  Go to: http://processing.org/  
           +  and: http://processingjs.org/  
           +  
           + - - - - - - - - - - - - - - - - - - - - -->  
           <style type="text/css">  
      body {  
       background-color: #333; color: #bbb; line-height: normal;  
       font-family: Lucida Grande, Lucida Sans, Arial, Helvetica Neue, Verdana, Geneva, sans-serif;  
       font-size: 11px; font-weight: normal; text-decoration: none;  
            line-height: 1.5em;  
      }  
      a img {   
           border: 0px solid transparent;  
      }  
      a, a:link, a:visited, a:active, a:hover {   
           color: #cdcdcd; text-decoration: underline;  
      }  
      h1 {  
        font-family: Arial, Helvetica Neue, Verdana, Geneva, sans-serif;  
           width: 100%; letter-spacing: 0.1em;  
           margin-bottom: 1em; font-size: 1.65em;  
      }  
      canvas {   
           display: block;   
           outline: 0px;   
           margin-bottom: 1.5em;   
      }  
      #content {   
           margin: 50px auto 0px auto; padding: 25px 25px 15px 25px;  
           width: 580px; min-width: 300px; overflow: auto;  
           border-left: 1px solid #444; border-top: 1px solid #444;   
           border-right: 1px solid #333; border-bottom: 1px solid #333;  
           background-color: #3d3d3d;  
      }  
           </style>  
           <!--[if lt IE 9]>  
                <script type="text/javascript">alert("Your browser does not support the canvas tag.");</script>  
           <![endif]-->  
           <script src="processing.js" type="text/javascript"></script>  
           <script type="text/javascript">  
 // convenience function to get the id attribute of generated sketch html element  
 function getProcessingSketchId () { return 'elefantes'; }  
 </script>  
      </head>  
      <body>  
           <div id="content">  
                <div>  
                     <canvas id="elefantes" data-processing-sources="elefantes.pde"   
                               width="580" height="12020">  
                          <p>Your browser does not support the canvas tag.</p>  
                          <!-- Note: you can put any alternative content here. -->  
                     </canvas>  
                     <noscript>  
                          <p>JavaScript is required to view the contents of this page.</p>  
                     </noscript>  
             </div>  
 <h1>5000 Elefantes - jon tohrs</h1>  
                <b>Send me money -_-</b>  
             <p id="description">Codigo dividido de mil en mil: Uno por cada boton.</p>  
 <form action="https://dl.dropboxusercontent.com/u/4647913/processing-apps/elefantes.html">  
 <input type="submit" value="1000" />  
 </form><form action="https://dl.dropboxusercontent.com/u/4647913/processing-apps/elefantes2.html">  
 <input type="submit" value="2000" />  
 </form><form action="https://dl.dropboxusercontent.com/u/4647913/processing-apps/elefantes3.html">  
 <input type="submit" value="3000" />  
 </form><form action="https://dl.dropboxusercontent.com/u/4647913/processing-apps/elefantes4.html">  
 <input type="submit" value="4000" />  
 </form><form action="https://dl.dropboxusercontent.com/u/4647913/processing-apps/elefantes5.html">  
 <input type="submit" value="5000" />  
 </form>  
 <br /><form action="http://gnome-bot.blogspot.com/2014/05/5000-elefantes-processingjs-dirty-fix.html">  
 <input type="submit" value="Back to Blog" />  
 </form><br />  
                Built with <a href="http://processing.org" title="Processing">Processing</a>  
                and <a href="http://processingjs.org" title="Processing.js">Processing.js</a>  
                </p>  
           </div>  
      </body>  
 </html>  


Por cada link, hay que cambiar el siguiente codigo:
data-processing-sources="elefantes.pde"

Por el siguiente:
data-processing-sources="elefantes2.pde"

data-processing-sources="elefantes3.pde"

data-processing-sources="elefantes4.pde"

data-processing-sources="elefantes5.pde"

2499 Elefantes (Processing / Processing.js)

Y por que solo la mitad de los elefantes?  :)  Pues porque esa fue la ventana mas grande que pude lograr con Processing.js.  Hasta donde tengo entendido, el tamaño de la ventana no lo determina Processing, sino el sistema operativo.  De funcionar mi PC principal, tal vez hubieramos quedado en 5000 (solo habria que cambiar a "int i=1; i<5001"), como siempre.  Pero, ya que mi PC esta en coma, y mi maquina de respaldo tiene 13 años, pues solo llegamos a 2500... o casi... :)

Parece ser que a dropbox no le gustan los caracteres unicode :o cambia todas mis ñ's por cajitas misteriosas...

-OR-

Try It

elefantes.pde

// 2499 Elefantes
// jon tohrs
// send me money -_-
// window geometry
size (580, 30000, P2D);
background (#740000);

// variables
String a = "s";
String b = "n";
String c = "ron";
int e = 1;

// strings
for (int i=1; i<2500; ) {
  if (i == 1) {a = "";} else {a = "s";}
  if (i == 1) {b = "";} else {b = "n";}
  if (i == 1) {c = "";} else {c = "ron";}
  String w = (i + " elefante" + a);
  String x = (" se columpiaba" + b);
  String y = ("Como veia" + b);
  String z = ("fue" + c + " a llamar");
  e++; 
  i++;
  textSize(10);
  text (w + x + " sobre la tela de una araña.  " + y + " que resistia, " + z + " a otro elefante...", 10, 12*e);  // output
}

5000 Elefantes (C++)

Version en C++ de la cancion infantil.  De ser posible, trato de agregar una pausa entre cada linea.  No siempre se como hacerlo, asi que no siempre lo hago :) 


// panchomil elefantes
// jon tohrs
// send me money -_-

#include 
using namespace std;

int main()
    {
 std::string s[8] = {" elefante", " elefantes", " columpiaba", " columpiaban", " veia", " veian", "fue", "fueron"};
   for(int f = 1; f < 5001; f++) {
 if (f < 2){
  std::cout << f << s[0] << endl;
  sleep(1);
  std::cout << "se" << s[2] << endl;
  sleep(1);
  cout << "sobre la tela" << endl;
  sleep(1);
  cout << "de una araña" << endl;
  sleep(1);
  std::cout << "como " << s[4] << endl;
  sleep(1);
  cout << "que resistia" << endl;
  sleep(1);
  std::cout << s[6] << " a llamar" << endl;
  sleep(1);
  cout << "a otro elefante" << endl;
  sleep(1);
  cout << "" << endl;}
 else{
  std::cout << f << s[1] << endl;
  sleep(1);
  std::cout << "se" << s[3] << endl;
  sleep(1);
  cout << "sobre la tela" << endl;
  sleep(1);
  cout << "de una araña" << endl;
  sleep(1);
  std::cout << "como " << s[5] << endl;
  sleep(1);
  cout << "que resistia" << endl;
  sleep(1);
  std::cout << s[7] << " a llamar" << endl;
  sleep(1);
  cout << "a otro elefante" << endl;
  sleep(1);
  cout << "" << endl;}
    }
    sleep(1);
    cout << "Y asi hasta el infinito..." << endl;
    std::cin.get();
    return 0;
  }

5000 Elefantes (C)

Version en C de la cancion infantil.  Apesto en C :)  Algun dia mejorare y lo hare con menos letras... mientras tanto aqui esta esta version ultra-verbose.  Probado en linux con gcc.

/*
 * 5000 Elefantes
 * by Jon Tohrs
 * Send me money -_-
 * 
 */
#include 

int main(void)
{       
        int f;
        
        for (f = 1; f <= 5000; f++) {
                switch (f) {
                case 1:
                        printf("1 elefante\n");
                        printf("se columpiaba\n");
                        printf("sobre la tela\n");
                        printf("de una araña\n");
                        printf("como veia\n");
                        printf("que resistia\n");
                        printf("fue a llamar\n");
                        printf("a otro elefante...\n");
                        printf("\n");
                        break;
                default:
                        printf("%d elefantes\n", f);
                        printf("se columpiaban\n");
                        printf("sobre la tela\n");
                        printf("de una araña\n");
                        printf("como veian\n");
                        printf("que resistia\n");
                        printf("fueron a llamar\n");
                        printf("a otro elefante\n");
                        printf("\n");
                        break;
                }
        }       
        
        return 0;
}       

5000 Elefantes (COBOL)

Cielo santo, que cosas... En mi vida habia trabajado con un lenguaje tan extraño... Bueno, tal vez x86 assembly sea igualmente rarito :)  Me costo alrededor de media hora lograr que este aparato funcionara.  Supongo que no esta mal, para ser la primera vez que trabajo con COBOL.  Ha sido probado en linux con open-cobol.  Lo unico que no logre fue deshacerme de los ceros a la izquierda, lo cual no me molesta demasiado.  Tal vez un dia de estos regrese y lo arregle :)  Mientras tanto, hace lo que tiene que hacer.


IDENTIFICATION DIVISION.
   PROGRAM-ID. 5000-Elefantes.
   AUTHOR. Jon Tohrs -- Send me money -_-  --.
DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-VARIABLES.
          05 WS-ELEPHANTS                    PIC 9(4)    VALUE 0.
          05 WS-NEXT-ELEPHANTS               PIC 9(4)    VALUE 0.
PROCEDURE DIVISION.
   SWING-THOSE-ELEPHANTS.
          PERFORM VARYING WS-ELEPHANTS FROM 0 BY 1 UNTIL WS-ELEPHANTS = 5000
          DISPLAY SPACES
          ADD 1 TO WS-ELEPHANTS GIVING WS-NEXT-ELEPHANTS
          EVALUATE WS-ELEPHANTS
            WHEN 0
     DISPLAY WS-NEXT-ELEPHANTS
             " elefante"
     DISPLAY "se columpiaba"
     DISPLAY "sobre la tela"
     DISPLAY "de una araña"
     DISPLAY "como veia"
     DISPLAY "que resistia"
     DISPLAY "fue a llamar"
     DISPLAY "a otro elefante..."
            WHEN 1 Thru 5000
     DISPLAY WS-NEXT-ELEPHANTS
             " elefantes"
     DISPLAY "se columpiaban"
     DISPLAY "sobre la tela"
     DISPLAY "de una araña"
     DISPLAY "como veian"
     DISPLAY "que resistia"
     DISPLAY "fueron a llamar"
     DISPLAY "a otro elefante..."
          END-EVALUATE
        END-PERFORM
        DISPLAY SPACES
        DISPLAY "Y asi hasta el infinito..."
      STOP RUN.

5000 Elefantes (BASIC)

Seguimos con las oldies :) Version en BASIC de la cancion infantil. Probado en linux con bywater basic. Funcional, hasta donde yo se.

 10 REM Muchomil elefantes
 20 REM by Jon Tohrs 
 30 REM send me money -_-
 40 FOR X=1 TO 5000 STEP 1
 50 PRINT X;" elefante";
 60 IF X<>1 THEN PRINT "s"
 70 PRINT "se columpiaba";
 80 IF X<>1 THEN PRINT "n"
 90 PRINT "sobre la tela"
100 PRINT "de una araña"
110 PRINT "como veia";
120 IF X<>1 THEN PRINT "n"
130 PRINT "que resistia"
140 PRINT "fue";
150 IF X<>1 THEN PRINT "ron";
160 PRINT " a llamar"
170 PRINT "a otro elefante..."
180 PRINT ""
190 NEXT

5000 Elefantes (Pascal)

I'm all about old school... -_-  El codigo a continuacion reproduce en la pantalla la letra de la cancion infantil, de uno a cinco mil elefantes.  Pascal es, a estas alturas, una lengua tan muerta como el latin o el arameo, pero mientras funcione, funciona.  Por lo tanto, helo aqui.


program CincoMilElefantes (output);
{chorrocientosmil elefantes
* by jon tohrs
* send me money -_-}

const
  PHANTSTART = 1;
  PHANTSEND = 5000;

type
  tPhants = PHANTSTART..PHANTSEND;

var
  phants : tPhants;

begin
  for phants := PHANTSTART to PHANTSEND do
  begin
    if phants > 1 then
    begin
      writeln (phants,' elefantes');
      writeln ('se columpiaban');
      writeln ('sobre la tela');
      writeln ('de una araña');
      writeln ('como veian');
      writeln ('que resistia');
      writeln ('fueron a llamar');
      writeln ('a otro elefante...');
      writeln
    end
    else
    begin
      writeln (phants,' elefante');
      writeln ('se columpiaba');
      writeln ('sobre la tela');
      writeln ('de una araña');
      writeln ('como veia');
      writeln ('que resistia');
      writeln ('fue a llamar');
      writeln ('a otro elefante...');
      writeln    
    end
  end
end.

5000 Elefantes (BASH) - V 2

Version corregida en BASH.  Reproduce en la pantalla la letra de la cancion infantil.  Ya no presenta todo en plural.  Este codigo es un poco mas eficiente.


#!/usr/bin/env bash

#chorromil elefantes (by Jon Tohrs)
#send me money -_-

for x in {1..5000}
 do
  if [ $x == 1 ]
   then
    l=elefante
    m=columpiaba
    v=veia
    f=fue
   else
    l=elefantes
    m=columpiaban
    v=veian
    f=fueron
  fi
 echo $x $l
 sleep 1
 echo "se" $m
 sleep 1
 echo "sobre la tela"
 sleep 1
 echo "de una araña"
 sleep 1
 echo "como" $v
 sleep 1
 echo "que resistia"
 sleep 1
 echo $f "a llamar"
 sleep 1
 echo "a otro elefante..."
 sleep 1
 echo
done
 echo "Y asi hasta el infinito..."
exit 0

5000 Elefantes (Perl)

El codigo a continuacion muestra en la pantalla la letra de la cancion infantil.  Perl no es exactamente mi fuerte, por lo que el codigo no es muy elegante.  Sin embargo, funciona.


#!/usr/bin/env perl
#milochomil elefantes (by Jon Tohrs)
#send me money -_-
$nElephants = $ARGV[0];
$nElephants = 5000 if $nElephants eq '' || $nElephants < 0;

foreach (1 .. $nElephants) {
    $s = ($_ == 1) ? "" : "s";
    $n = ($_ == 1) ? "" : "n";
    $r = ($_ == 1) ? "" : "ron";    
    print "\n$_ elefante$s\n";
    print "se comlumpiaba$n\n";
    print "sobre la tela\n";
    print "de una araña\n";
    print "como veia$n\n";
    print "que resistia\n";
    print "fue$r a llamar\n";
    print "a otro elefante...\n";
}
print "\n *y asi hasta el infinito* \n";

5000 Elefantes (VBS)

Suerte tratando de deshacerse de este :)  VBS puede ser odioso.  El código a continuación mostrara en la pantalla la letra de la canción infantil.  Solo es necesario guardar el código en un archivo con extensión vbs y darle doble click.



'Chorromil Elefantes (by Jon Tohrs)
'send me money -_-

For i = 1 To 5000 Step 1
    Select Case i
        Case 1
            msg i & " Elefante"
     msg "se columpiaba"
     msg "sobre la tela"
     msg "de una araña"
     msg "como veia"
     msg "que resistia"
     msg "fue a llamar"
     msg "a otro elefante..."
        Case Else
            msg i & " Elefantes"
     msg "se columpiaban"
     msg "sobre la tela"
     msg "de una araña"
     msg "como veian"
     msg "que resistia"
     msg "fueron a llamar"
     msg "a otro elefante..."
    End Select
Next

Sub msg(message)
    MsgBox message, , "5000 Elefantes"
End Sub

5000 Elefantes (Javascript)

El codigo a continuacion muestra en la pantalla la letra de la cancion infantil.  Se puede guardar un archivo de texto con extension html.  Al abrirlo en el navegador, mostrara la cancion.


<!chocomil elefantes (by Jon Tohrs)>
<!send me money -_->
<html><head><title>5000 Elefantes</title></head><body>
<script>
function out(v){
document.write(v);
}
for(i=1;i<=5000;i++){
out(i);
out(' elefante');
out((i!=1)?'s':'');
document.write("<br>");
out(' se columpiaba');
out((i!=1)?'n':'');
document.write("<br>");
out(' sobre la tela')
document.write("<br>");
out(' de una ara\u00f1a.');
document.write("<br>");
out(' como veia');
out((i!=1)?'n':'');
document.write("<br>");
out(' que resistia');
document.write("<br>");
out(' fue');
out((i!=1)?'ron':'');
out(' a llamar')
document.write("<br>");
out(' a otro elefante...');
document.write("<br>");
};
out('Y asi hasta el infinito...');

</script>
</body></html>

5000 Elefantes (BASH)

El codigo a continuacion reproduce en la pantalla el texto de la cancion infantil.  BASH (bourne again shell) es el interprete predeterminado en la mayoria de las distribuciones de Linux.  El codigo que aqui incluyo dista de ser perfecto, ya que presenta todo en plural, lo cual puede ser arreglado, solo que soy perezoso :)


#!/usr/bin/env bash

#chocomil elefantes (by Jon Tohrs)
#send me money -_-

les="elefantes"
mid="se columpiaban"
mi2="sobre la tela"
mi3="de una araña"
fin="como veian"
fi2="que resistia"
fi3="fueron a llamar"
fi4="a otro elefante..."

for x in {1..5000}
 do
  echo $x $les; sleep 1; echo $mid; sleep 1; echo $mi2; sleep 1
  echo $mi3; sleep 1; echo $fin; sleep 1; echo $fi2; sleep 1
  echo $fi3; sleep 1; echo $fi4; sleep 1
 done

5000 elefantes (Python)

...se columpiaban sobre la tela de una araña...

El codigo a continuacion, reproduce en la pantalla el texto de la cancion infantil.  En Linux, tambien seria posible algo como "./elefantes.py | espeak -v es" (sin comillas) para hacerlo un poco mas entretenido :)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
pinchemil elefantes (by Jon Tohrs)
send me money -_-
"""

from time import sleep

for elephants in range(1, 5000, 1):
    if elephants > 1:
        print elephants, "elefantes"
        sleep(1)
        print "se columpiaban"
        sleep(1)
        print "sobre la tela"
        sleep(1)
        print "de una araña"
        sleep(1)
        print "como veian"
        sleep(1)
        print "qe resistia"
        sleep(1)
        print "fueron a llamar"
        sleep(1)
        print "a otro elefante..."
        sleep(1)
    elif elephants == 1:
        print elephants, "elefante"
        sleep(1)
        print "se columpiaba"
        sleep(1)
        print "sobre la tela"
        sleep(1)
        print "de una araña"
        sleep(1)
        print "como veia"
        sleep(1)
        print "que resistia"
        sleep(1)
        print "fue a llamar"
        sleep(1)
        print "a otro elefante..."
        sleep(1)