#90 tu y yo vamos empate, ¿quién ganará?
#90 es decir, ¿el de BLZKZ tarda 252 segundos?
Debo añadir que el tiempo de ejecución está dentro de lo normal para un lenguaje interpretado, interpretando Brainfuck.
Resultados kata: INTERPRETA BRAINFUCK
Bueno, de esta kata saco una conclusión: Python está de moda xD
Ya hemos acabado la segunda kata, al final ha habido bastante participación. Por lo que veo os váis rotando de kata en kata
Bueno, al lío, los resultados para la 2ª kata (interpreta brainfuck, #50):
¡Gracias todos por participar! Code07 se nos ha dormido en los laureles y ha perdido el puesto como el mayor nerdo. Comienza la lucha
Como siempre, en unos minutos posteo kata.
#92 Force y yo hicimos no hace mucho un curso de compiladores con Python, y a Amazon lo he obligado por motivos "empresariales" a aprenderlo xD
KATA: Gradientes ASCII
1. El programa recibirá (por stdin, parámetro de función...): ANCHO, ALTO
(ints), X_CENTRO, Y_CENTRO, RADIO
(floats) y GRADIENTE
(cadena/array de caracteres). RADIO
es opcional.
2. Debe imprimir por pantalla una matriz de caracteres de tamaño ANCHO
xALTO
.
3. La matriz es una representación de un espacio de ANCHOx(2*ALTO)
UL (Unidades de Longitud) sobre el que se distribuirá el gradiente (como curiosidad, ALTO*2
porque la mayoría de fuentes monospaced son el doble de altas que de anchas y al imprimir quedará bonito).
4. La esquina superior izquierda de la matriz será (0,0), creciendo x
e y
hacia la derecha y abajo respectivamente.
5. X_CENTRO
e Y_CENTRO
definen el centro del gradiente en el espacio (¡en celdas de la matriz, no en UL!).
6. Si no se especifica RADIO
, el radio del gradiente (en UL) es igual a la mayor distancia entre el centro y las cuatro esquinas de la matriz (es decir, la matriz completa debe quedar cubierta por el grandiente).
7. Cada caracter de la matriz de salida debe ser el caracter correspondiente del GRADIENTE
de entrada, dividiendo el radio del gradiente (con el centro y radio especificados) en tantos tramos como caracteres haya en GRADIENTE
. El tramo para cada caracter debe tener la misma longitud (en UL).
8. Para las celdas fuera del gradiente se debe imprimir un espacio en blanco ( ' ' )
Ejemplos de ejecución
Entrega
-
Todo programa posteado se debe acompañar de AL MENOS una screenshot de la salida para las entradas de ejemplo 1 y 3.
-
La kata acabará el miércoles 20 de febrero a las 23:59 y se publicará una nueva kata inmediatamente, con la misma duración.
En este ejemplo, os sale una única fila de '-' en la esquina inferior izquierda mientras que en la derecha salen 7, teniendo en cuenta lo de la represntación x2, No es mas correcta esta?
Tnhx #98
Aquí va la mía en C++ otra vez. Todas van bien menos la del 3D, no se porque pero si meto el caracter · en el input en ideone compila, pero la salida queda en blanco (en el cmd funciona perfectamente así que supongo que será algo de ideone).
#99 Debe ser cosa de la codificación que usa usando para el código fuente. Hay caracteres no ASCII de por medio.
#97 teniendo en cuenta que el ancho es 75 y el alto 35*2 = 70, cabe mas gradiente a la ancho que a lo largo luego es normal que por la derecha aparezca mas cantidad de '-' que por la parte inferior.
Si haces el ejemplo con ancho 75 y alto 37 (37*2 = 74) el resultado ya es mas parecido
Algo que estuve cacharreando anoche:
Bueno, me puse a hacer una versión dinámica para editar los parámetros en textboxes, pero creo que se me ha ido de las manos (source).
A Ideone no lo puedo subir el código, ya que hay que compilar con la opción -lm para poder usar la librería math.h y eso ideone no lo admite, pero os pongo screen del código y las screen de algunos de los ejemplos.
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#define _(x) strlen(x)
#define __ float
#define noles int
#define ll '\0'
__ d(__ x, __ y,noles i,noles j){return sqrt(pow(x
-i,_(" ") )+pow (y-j,_(" "))); } __ m(__ as,
__ b, __ c ,__ d){ return (as
b)?((c>d) ?(( as> c)?as:c):(
(as>d)?as: d)) :(( c>d)?((b>c
)?b:c):((b >d) ?b: d));}noles
main(noles argc , char* argv
[]){noles M,G ,i, j;__ D,ASD
,caca;M=atoi (argv [_( "M")]);G =
atoi(argv[ (2)] )*_ (" ");D =
atof(argv[ 3]); ASD =atof(argv
[_("IDA!") ])*_( " " );char* QQ
= argv[5] ;if( argc ==_(" "
)){caca=atof (argv [_( " ")]);
}else{caca= m(d(D ,ASD ,M,G),d(D,
ASD,ll,ll), d(D , ASD, G,ll),d(D,
ASD,ll,M));}__ asdf= caca/_(QQ);for(i=_(" ");i<G ;i+=_("\"\"")){for(j=ll;
j<M;j++){noles q = ( noles)d(D, ASD, i, j)/asdf; /*HOOLA*/putchar((q>=_(
QQ))?' ':QQ[q]);}/**/ /* LE FU DUDES; LE FU */ putchar('\n');}return 0;}
Screen del codigo:
Ejemplos:
#104 da fak
no puedes poner el código sin ofuscar como una persona normal? ni que te fueramos a plagiar
Ejecutable y proyecto de unity3d 4 en DropBox
En principio solo quería hacer el gradiente sobre una textura, pero despues de ver la kata de KaoD con sus evals me dio envidia y la hice dinámica tb xD
El código esta bastante chapu y probablemente lleno de bugs :/
P.D: El corazon en la captura es de total casualidad
Una cosa que me he estado preguntando, no creeis que es mejor hacer las katas de menor duración? porque practicamente todos posteamos las nuestras en los primeros días (y sino suele ser porque empezamos mas tarde, no porque no de tiempo) y hay que esperar bastante tiempo hasta la próxima. Yo la haría de 4 o 5 dias en ved de una semana (o podría ser variable segun la dificultad que tenga). ¿Qué os parece?
#108 yo también lo pensé, pero también hay una ronda que postea a última hora. Imagino que si se acorta la semana, esos de última hora también postearán antes así que... a partir de ahora pongo dos katas por semana, ¿ok?
#109 También dependerá de la magnitud del problema y de como tenga uno la vida en ese momento.
Vamos, que no prometo hacerlas todas xD
Importante lo que dice #110
Yo esta kata me metí a hacerla pero tengo una época bastante ocupada así que no me dio (ni me va a dar) tiempo de entregarla
#113 Si te sale alguna funcion wapa pegala
por cierto que meti par de atajos para senos y cosenos: S y C son la tipica funcion de seno y coseno, S2 y C2 tienen 3 parametros (t,min,max) donde el rango de valores devueltos es [min,max]
Resultados kata: GRADIENTES ASCII
Los resultados parea la 3ª kata (gradientes ASCII, #94) son:
Como comprenderéis voy a dejar de contar la puntuación (por razones obvias).
Como comento en #109, a partir de ahora se harán dos katas por semana, ambas con duración de 4 días (al no ser múltiplo de 7 rotará) aunque me sigo planteando incluso rebajarlo a 3 días (como hasta ahora, iré calibrando).
Espero que vuestro orgullo personal os mantenga participando (no como BLZKZ que ya van varias que dice que participa y siempre se raja).
Como siempre, gracias a todos por particpar
KATA: Fractal de Mandelbrot
La kata consiste en lazar ar... en mostrar el conjunto de Mandelbrot (en español).
Colorines y otras cosas chulas.
El conjunto de Mandelbrot es el más conocido de los conjuntos fractales y está definido de esta forma: sea c
un número complejo, a partir de este se construye una sucesión:
z(0) = 0
z(n+1) = z(n)^2 + c
Se dice que el punto c
del plano complejo pertenece al conjunto de Mandelbrot sí y sólo si esta sucesión queda acotada para ese punto, es decir, no diverge (o dicho de otra forma, tiene un límite superior, no tiende a infinito, etc.)
Para información más detallada, por supuesto, lo mejor es consultar los enlaces de la Wikipedia (recomiendo evitar ver pseudocódigos, le quita la gracia a hacer la kata, ¿no?).
Reglas
En esta kata no hay reglas, es freestyle, así que la decisión de cómo mostrar el fractal será a cargo de cada participante (aunque obviamente debe mostrar ambos ejes del plano complejo).
Vale, he mentido, un par de reglas. El usuario debe poder definir (ya sea en forma de variable, argumento de función, argumento de command-line...) como mínimo:
1. La resolución de salida (sea cual sea vuestra forma de mostrar la salida).
- La cota superior/iteración máxima.
Bonus points: si se muestran los puntos fuera del conjunto en base a su velocidad de divergencia.
Entrega
-
Todo programa posteado se debe acompañar de AL MENOS una screenshot de la salida o resultado en intérprete online.
-
La kata acabará el domingo 24 de febrero a las 23:59.
#117 no lo conocía, estoy viendo "learnable programming" y me ha recordado a una conferencia que vi sobre un IDE basado en esto (¡y funcional, no eran videos!) que se programaba un videojuego.
La verdad es que la idea es cojonuda, aunque no creo que esto sea una alternativa al "real-world programming" como propone (para mí el real-world programming es inherentemente distribuído, y asíncrono y por tanto no visualizable).
Pero en cuando a la crítica a Processing y otros entornos da en el clavo.
Voy a colgar una pic de mi mandelbrot de 768*512, el codigo no lo cuelgo hasta pasado mañana que sino os volveis perezosos
Update!
PD: Lo he lanzado en "la nube" en pythonanywhere, quiero meterle un gradiente basado en las iteraciones, pero alli va lentisimo XD (todo porque en mi curro no me deja bajarme la libreria de python ILP)
Benchmark lanzado en pythonanywhere:
14 segundos imagen de 1536x1024 con 20 iteraciones
248 segundos imagen de 8192x4096 con 30 iteraciones