13 de noviembre de 2007

Programando chorradas

He estado rebuscando y he encontrado un programilla muy interesante que me dediqué a hacer el año pasado cuando debería haber estado haciendo cosas más serias, tipo prácticas para presentar y trabajos para nota, pero el aburrimiento y la chorrada son poderosas influencias.

Aquí está el código, por si alguien quiere echarle un vistazo:


##################################################
# #
# BIENVENIDOS AL EXQUISITO BUTILEITOR #
# VERSIÓN 1.1 #
# by manfo #
# Incorporando salida a fichero #
# #
##################################################

#!/bin/bash
i=1
#Chequeo de argumentos
if ([ ! $1 ] || [ ! $2 ])
then
echo "Uso: ./butileitor.sh <numero butilas> <tamaño butilas>
<fichero destino(en blanco para stdout)>"
exit
fi
#Bucle para el número de butilas
while (( $i <= $1 ))
do
j=1
#Voy metiendo el texto en un archivo temporal
#para poder luego trabajar con él
echo " ___ " >> butil.tmp
echo " /_|_\ " >> butil.tmp
# Bucle para la longitud butilar
while (( $j <= $2 ))
do
echo " | | " >> butil.tmp
(( j=$j+1 ))
done
echo " / \ " >> butil.tmp
echo " \__|__/ " >> butil.tmp
(( i=$i+1 ))
done
#Comprobamos si se pide almacenar en fichero
if ( test ! $3 )
then
# Si no, lo imprimimos en pantalla y borramos el temporal
cat butil.tmp
rm butil.tmp
else
mv butil.tmp $3
fi
#Espero que os haya gustado xD
Después de esta monumental ida de pinza, se puede escribir en la línea de comandos algo tal que así (suponiendo que hemos guardado los datos en butileitor.sh):
$ ./butileitor.sh 2 3
(el $ indica el prompt del sistema)

y nos saldrá un grandioso resultado:

  ___
/_|_\
| |
| |
| |
/ \
\__|__/
___
/_|_\
| |
| |
| |
/ \
\__|__/
Es imposible que penséis que no soy friki después de esto.

Actualización: tras aún más tiempo de aburrimiento, he introducido una nueva versión del butileitor, con posibilidad de dibujar butilas en paralelo. Podéis verlo aquí.

3 comentarios:

Menelmakar dijo...

Podrías probar a hacerlo en Pascal, Eiffel y C++ así para redondear la jugada xD

Mig dijo...

En C++ no porque no sé, pero en C posiblemente, si me aburro otro día lo hago, no lo dudes.

Anónimo dijo...

butila's team always together! :D