En pocas líneas...

Hola de nuevo.

Hoy me gustaría mostraros algunos programas que me he encontrado buceando por la web de Yo, programador, todos ellos con un factor en común: su reducido número de líneas o bytes.

En los títulos teneis los enlaces a la entrada de Yo, programador:

Programa en Python para resolver un Sudoku


def r(a):i=a.find('0');~i or exit(a);[m

in[(i-j)%9*(i/9^j/9)*(i/27^j/27|i%9/3^j%9/3)or a[j]for

j in range(81)]or r(a[:i]+m+a[i+1:])for m in'%d'%5**18]

from sys import*;r(argv[1])


Servidor web en Bash

#!/bin/bash

# web.sh -- http://localhost:9000/hello?world



RESP=/tmp/webresp

[ -p $RESP ] || mkfifo $RESP



while true ; do

( cat $RESP ) | nc -l -p 9000 | (

REQ=`while read L && [ " " "<" "$L" ] ; do echo "$L" ; done`

echo "[`date '+%Y-%m-%d %H:%M:%S'`] $REQ" | head -1

cat >$RESP <<EOF

HTTP/1.0 200 OK

Cache-Control: private

Content-Type: text/plain

Server: bash/2.0

Connection: Close

Content-Length: ${#REQ}



$REQ

EOF

)

done


Código original aquí.


Tetris básico en 560 bytes

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">

<body onKeyDown=K=event.keyCode><script>X=[Z=[B=A=12]];h=e=K=t=P=0;function Y()

{C=[d=K-38];c=0;for(i=4;i--*K;K-13?c+=!Z[h+p+d]:c-=!Z[h+(C[i]=p*A-Math.round(p/

A)*145)])p=B[i];!t|c+4?c-4?0:h+=d:B=C;for(f=K=i=0;i<4;f+=Z[A+p])X[p=h+B[i++]]=1

if(e=!e){if(f|B){for(l=228;i--;)Z[h+B[i]]=k=1;for(B=[[-7,-20,6,17,-9,3,6][t=++t

%7]-4,0,1,t-6?-A:-1];l--;h=5)if(l%A)l-=l%A*!Z[l];else for(P+=k++,j=l+=A;--j>A;)

Z[j]=Z[j-A]}h+=A}for(i=S="";i<240;X[i]=Z[i]|=++i%A<2|i>228)i%A?0:S+="<br>",S+=X

[i]?"■":"_";document.body.innerHTML=S+P;Z[5]||setTimeout(Y,99-P)}Y()</script>

</body>

</html>



Ajedrez con IA en 5KB
De este último no tengo el código, y es sin duda el más extenso, pero es que es un ajedrez...

El servidor web y el que resuelve sudokus no los he probado, pero para los otros hay 'plug and play' ;)

Como mínimo, curiosos.

0 Comments:

Post a Comment