Delirando sobre informática, fotografía, programación, móviles y mucho más desde 2003
Como tengo invitaciones de GMail y necesito una información, pensé en regalarlas a quien me diga lo que necesito saber. Son 3 cosas asi que una invitación por cada. La pregunta es: ¿Cuánto me costarían estos 3 recorridos en taxi en Madrid?:
Tengo unas cuantas invitaciones de GMail para regalar. Esta vez, como me hizo gracia lo de Brainfuck, os reto a que traduzcáis un programa en C a Brainfuck. Los tres primeros en darme una solución válida (las tres diferentes, evidentemente) se llevarán la cuenta de GMail.
El programa en cuestión debe tomar por teclado un número entero y luego elevar 2 a ese número:
#include <stdio.h>
#include <math.h>
int main(void)
{
int *potencia;
printf("\nIntroduce la potencia: "
scanf("%d", potencia);
printf("\n\n2^%d = %d", pow(2, *potencia));
return 0;
}
Aquí podéis encontrar compiladores e intérpretes. No vale utilizar ningún tipo de lenguaje intermedio, se debe escribir a mano todo el código.
Puedes escribir lo que quieras, pero por favor hazlo respetando a los demás y en relación al tema que se está tratando. Todo comentario insultante o fuera de lugar será eliminado
Está permitido utilizar las siguientes etiquetas HTML para formatear tu comentario: <a> <b> <blockquote> <i> <u>. Además también puedes utilizar estos emoticonos:
Puedes enviar referencias a esta anotación utilizando esta dirección
Me da que te vas a quedar con las invitaciones… sobre todo teniendo en cuenta que ya se acaban las vacaciones y la gente no tiene tanto tiempo…
Pues que pena, con lo divertido que podía ser el concurso !!! venga animarse aunque ya tengais cuenta en gmail ![]()
Salu2.Ferdy
Demasiado tiempo lleva esto
Ánimo Cek, Brainfuck acaba por ser adictivo ![]()
Salu2.Ferdy
hola
ante todo que me gusta mucho tu log y que con esta prueba me he picado jajja
solo una pregunta ¿estas seguro que se puede realizar una multiplicacion de numeros con brainfuck? es que una rayada los ascii
un saludo
He consiguido que me almacene el resultado de elevar 2 a n en uno de los bytes de memoria, lo que no consigo es transformar ese numero a formato ASCII. Ya son las 3:30 así que eso lo dejo para mañana.
Aqui va el codigo que he conseguido:
>>++< <,>++++++++[< ------>-]< [>+[>[>+< -]>[< +>>+< -]>[< +>-]< <<-]<-]>>[-]>
P.D.: Solo funciona hasta la 7 (porque a partir del 8 el valor es 256 y ya no cabe en un byte).
Parece que no se ha pegado bien el codigo, intentemoslo de nuevo…
>>++<<,>++++++++[<----
-->-]<[>+[>[>+<-]>[<+>>+
<-]>[<+>-]<<<-]<-]>>[-]>
Ahora si.
P.D.: Solo funciona hasta el 7 (a partir del 8 el resultado es 256 y no cabe en un byte)
Ah, se me olvidaba, supongo que como no funciona del todo no lo aceptarás como solución. Pero por si acaso crees que es valido, te aviso que no hace falta que me mandes la invitación a Gmail, porque ya tengo mi cuenta.
Reservala para alguien que no tenga, yo solo he participado porque me he picao con el lenguaje ese ![]()
Salu2
Wheeeeeee!!! yo tengo otra solución que si funciona, el único problema es que hay que verlo con algún programa que te permita ver la memoria como este porque no se convertir numeros en caracteres:
http://www.hardtware.de/index.cgi?site=products&action=brainfuck
,————————————————[>+>+< <-]>>[>+>+< <-]<-[->>>[< +<+>>-]< <[>>+< <-]<]>>.
Tengo que felicitarte por el ejercicio. Fue muy estimulante y la felicidad que conseguí cuando el programa funcionó es incomparable.
Merd, no se ve…
,------------------------------------------------[>+>+< <-]>>[>+>+< <-]<-[->>>[< +<+>>-]< <[>>+< <-]<]>>.
Rrrrrrrrrggggg….
,————————————————[>+>+<<-]>>[>+>+<<-]<-[->>>[<+<+>>-]<<[>>+<<-]<]>>.
¿ IoZ has probado a correrlo en un intérprete que soporte campos mayores ?
He añadido esta feature a mi intérprete exclusivamente para el concurso:
http://ferdy.bitacoras.com/archivos/2004/09/02/brainfuck/
Hermann, no entiendo eso de que no se pueden convertir numeros en caracteres… ascii(48) = 0 con eso te vale creo yo vamos.
Salu2.Ferdy
El problema no es ese, digamos que ejecutas el programa con un 5. El resultado es un 25. Por lo tanto en una direccion de memoria tienes un 25. Si le sumas 48 te da algo que no es 25, ya que no existe ningun caracter para el 25. Por lo tanto tendrias que separar el 25 a dos direcciones de memoria e imprimirlas por separado.
Ahí está la dificultad AFAIC. De la otra forma si no, no tiene excesiva complicación.
Salu2.Ferdy
lo que hace el programa es elevar el 2 ala potencia que el usuario entre 2elevado a n y te da el resultado OK.
xaus grax
nadamas para ver si a alguien le sobra una cuenta de gmail, gracias
zone_black@hotmail.com
Delirios de un Informático :: Gestionado con WordPress :: Alojado en Bitacoras.com :: Licenciado bajo Creative Commons
Concurso de brainfuck
Hace un momento hacía una pequeña introducción a brainfuck; David ha propuesto un concurso que consiste en implementar un mini programa en C.
Yo os recomiendo echarle un ojo al debug que he implementado en bfrun ya que os ayudará a programar la “co…