Coding katas: MV Coders on Fire II

EnZo

#29 No lo creo... xD

ItNaS

Explico un poco mi solución en #29

spoiler
4
E

Mi aportacion, en Erlang
https://gist.github.com/4694814

Enlazo tambien a un interprete online, por eso de facilitar la validacion :-)
http://ideone.com/VQTb2E

2
Lecherito

#9 Ya tienes mi solución bonita :3

Edito, voy a poner otra solución que me ha molado :3

spoiler
2 respuestas
Lecherito

Queremos otro kata D:

1
ItNaS

otra, otra :f5:

elkaoD

Sigue habiendo un día y pico para los rezagados xD Fecha en #2 (miércoles 6 a las 23:59)

En cuanto acabe subo, no sufráis.

elkaoD

La más corta que he conseguido en CoffeeScript:

v = "1234567890"
n = v.length/4
l = Math.ceil n+1
s = ~~n-1
o = [v[...l]]
o.push v[l+l+s..][s-i] + Array(l-1).join(' ') + v[l...l+s][i-1] for i in [1..s]
o.push v[l+s...l+l+s].split('').reverse().join ''
console.log o.join '\n'

Y la versión para Nerdobot CoffeeScript (va por ti Code07):

!coff ((v)->n=v.length/4;l=Math.ceil n+1;s=~~n-1;o=[v[...l]];o.push v[l+l+s..][s-i] + Array(l-1).join(' ') + v[l...l+s][i-1] for i in [1..s];o.push v[l+s...l+l+s].split('').reverse().join '';o) "0123456789"

Para ver el equivalente JS y ejecutar: http://goo.gl/sPlCU

5 1 respuesta
BLZKZ

#34 pero que mierda es esa de código?

1 respuesta
Lecherito

#39 No te gusta? :-c

Compila y eso eh :p

elkaoD

Bueno señores ya solo quedan 23 horas para clausurar así que vayan preparando las manitas.

Sois 22 usuarios con el hilo en favoritos. ¡Estiráos un poco, que son gratix!

EDIT:

En #38 he optado por ir a codegolf, pero la verdad ni JS puro ni CoffeeScript se prestan para ello. No hay mucha magia que comentar,

salvo un par de detalles:
C

#38 tienes mis dies. pongo screenshot de tu obra de arte:

1 2 respuestas
PiradoIV

#42 el cuadrado no se ve alineado en ningún cliente IRC, no me gusta.

kaoD ;*****

1 1 respuesta
BLZKZ

#43 eso por usar hipsteradas de mac

4
elkaoD

#42 y aquí el plugin con el código más limpito https://gist.github.com/alvaro-cuesta/4722062 Te habrás quedado contento, ¿no? xD

Aprovecho para comentaros a todos que andamos por #mv.nerd en QuakeNET. Entre otras tonterías a veces se habla de las katas.

1 1 respuesta
C

#45

#34

1 respuesta
Lecherito

#46 La proxima como me aburra lo haré peor xD

elkaoD

Resultados kata: RECTÁNGULOS DE TEXTO

Bueno, pues estoy bastante contento con esta primera kata, ha participado un huevo de gente, buen curro a todos :) Eso sí... ¡han faltado manitas! Para la próxima espero votaciones masivas, ¿eh? Que estáis 24 en favoritos.

¿Algún comentario? ¿Se ha hecho larga/corta la semana? ¿Os parece bien el sistema de puntuación o amplío el rango?

Bueno, al lío, los resultados a las 23:59 para la 1º kata (rectángulos de texto, #2):

Redoble de tambor

Ya tenemos los primeros nombres en el ranking, y con esto queda cerrada la primera kata. Calentad las manos porque en unos minutos subo kata nueva.

RegNatriX

Desconocía este post, intentaré apuntarme para la próxima!

1 respuesta
elkaoD

#49 estás de suerte, porque empieza ya mismo:

KATA: Interpreta Brainfuck

Para salirnos algo del tema ASCII, un poco de máquinas de Turing: Interpreta Brainfuck (en español). Brainfuck es un lenguaje esotérico de sólo 8 instrucciones, pensado para... bueno, brain-fuck. Sin embargo es un lenguaje Turing-completo, es decir, implementa la funcionalidad (mínima xD) de una máquina de Turing, es decir, teóricamente se podría implementar cualquier otro lenguaje Turing-completo en Brainfuck (si tienes lo que hay que tener).

Código recomendado para pruebas:

Hello World en Brainfuck
en una línea

http://esoteric.sange.fi/brainfuck/bf-source/prog/PRIME.BF Toma un número en ASCII (acabado en \n) de la entrada estándar y muestra números primos (en ASCII) hasta ese número.

PRIME.BF en una linea

Más gracias a ItNaS ( #63 ) :

Triángulo de Sierpinski
Fibonacci (imprime la serie hasta 89)

Más código:

Reglas

El objetivo es hacer un parser e intérprete de Brainfuck completamente funcional, es decir, debéis implementar (como mínimo, se permiten dialectos) las 8 instrucciones oficiales. No os asustéis, es más fácil de lo que parece.

El programa tiene que leer (1) código Brainfuck y (2) entrada estándar. Este debe (3) mostrar la salida correspondiente a su ejecución.

El código debe interpretar AL MENOS los siguientes caracteres (el resto de caracteres en el código serán ignorados):

  • + incrementa la celda actual

  • - decrementa la celda actual

  • > desplaza una celda a la derecha

  • < desplaza una celda a la izquierda

  • , lee un byte de la entrada estándar y lo almacena en la celda actual

  • . escribe el valor de la celda actual en la salida estándar

  • [ si el valor de la celda actual es 0, salta al ] correpondiente

  • ] si el valor de la celda actual es MAYOR que 0, salta al [ correspondiente

Características técnicas del intérprete (¡implementación obligatoria!)

Entrega

  • Todo programa posteado se debe acompañar de AL MENOS una screenshot de la salida de PRIME.bf para la entrada '20\n' (números primos hasta 20). Si se enlaza a intérprete online, no hace falta subir ninguna imagen.

  • El recomendable medir el tiempo que tarda en calcular los primos hasta 20 para poder comparar el rendimiento de las soluciones.

  • La kata acabará el miércoles 13 de febrero a las 23:59 y se publicará una nueva kata inmediatamente, con la misma duración.

  • Esto no es una regla, es un consejo: si os buscáis un intérprete online (mirad http://www.ideone.com pero hay mil alternativas) la gente lo valora porque puede ver si vuestro código funciona sin apenas esfuerzo.

2 respuestas
Lecherito

#50 Joder, este se ha complicado un rato más xDD

1 1 respuesta
elkaoD

#51 créeme que asusta y luego no es para tanto.

1 respuesta
Lecherito

#52 Jaja, no he dicho que asusta, digo que te has complicado un rato más, más o menos ya tengo la estructura en mi cerebro, pero de ahí a que funcione hay un paso xDD, voy a dormir mañana en clase lo hago.

1 respuesta
Amazon

#53 aprovechando las clases eh? xD

1
C

#50 pero la kata en que consiste, ¿en leer el post 10 veces y seguir sin entender qué broma es esta? xD

3 1 respuesta
Lecherito

#55 Yo he llegado a entenderlo más o menos xDD

El hola mundo me funciona, pero el fibonacci no D:

B

Yo estoy de exámenes y no pude ni revisar lo de la otra semana. A ver si cuando acabe me pongo al día (aunque no entre en el concurso).

Lecherito

Alguna pista sobre como interpretar los bucles anidados? >.<

#59 un wat?

2 respuestas
ItNaS

#58 un stack

1 respuesta
ItNaS

Lo tengo hecho en matlab pero no se como colgarlo en ideo para que funcione. voy a probar a ver

#58 http://en.wikipedia.org/wiki/Stack_%28abstract_data_type%29

Cuando te encuentras un "[" guardas la posicion en el stack.
Cuando te encuentras un "]" el top del stack es la llave correspondiente.

3 respuestas