Elija a su famoso informático famoso o pionero de la informática que nació en 1942 o antes (ya que 1943 marca el comienzo de la creación de la "primera" computadora ). Deben tener una página de Wikipedia u otro sitio que enumere su año de nacimiento y que explique cómo se relacionan sus logros con la informática. Puede elegir lo mismo que otra persona, pero se recomienda elegir a alguien nuevo.
Tome un nombre por el que son comúnmente conocidos. Es muy probable que sea su nombre y apellido, pero puede incluir abreviaturas o segundos nombres si eso es más común. Por ejemplo, para de Tony Hoare tanto Tony Hoare
y C. A. R. Hoare
sería aceptable.
Todos los caracteres del nombre deben ser ASCII imprimibles . Si el nombre contiene caracteres que no son ASCII imprimibles, está bien si elige algo aproximado. por ejemplo, en Kurt Godel
lugar de Kurt Gödel
.
Tome el conjunto de caracteres únicos en el nombre (p C. ARHoare
. Ej. ) Y cambie la escala ASCII imprimible por el año de nacimiento de su científico, dando vueltas desde el ~
espacio. (Básicamente agregue el año de nacimiento módulo 95). Esto le dará un (probablemente) nuevo conjunto de caracteres ASCII imprimibles.
Por ejemplo, CAR Hoare nació en 1934, por lo que cambiar a cada personaje en C. ARHoare
1934 (34 mod 95) da ePBctj2$5(
.
Este fragmento de pila hará todo el cambio por ti:
function go() {var name = document.getElementById("name").value;var year = parseInt(document.getElementById("year").value);var unique = {};for (var i = 0; i < name.length; i++) { unique[name.charAt(i)] = true; } var result = ''; for (var char in unique) { result += String.fromCharCode((char.charCodeAt(0) - 32 + year) % 95 + 32); } document.getElementById("result").value = result; }
Name: <input type="text" id="name" value="C. A. R. Hoare"><br>
Birth Year: <input type="text" id="year" value="1934"><br>
<button type="button" onclick="go()">Ok</button><br>
Result: <input type="text" id="result" readonly>
Reto
Usando este conjunto y solo este conjunto (sin pestañas, sin líneas nuevas) de caracteres ASCII imprimibles desplazados, escriba un programa que imprima Hello, [name]!
en stdout o la alternativa más cercana, donde [name]
es el mismo nombre exacto que eligió anteriormente y desplazado para obtener los caracteres de su programa. Puede usar varios caracteres del conjunto o no usar algunos. Por ejemplo, el programa teórico PetBee($25
imprime Hello, C. A. R. Hoare!
.
Tanteo
Su puntaje es el tamaño de su código en bytes multiplicado por el número de caracteres únicos en el nombre que elija. La llaga más baja gana.
fuente
Rear Admiral Grace Murray Hopper, United States Navy, (Retired), Doctor of Philosophy
. Nació en 1906. ¿Estaría bien?Rear Admiral Grace Murray Hopper
. Recuerde que el tamaño de su código se multiplica por el número de caracteres únicos en el nombre, por lo que un nombre más largo no es necesariamente mejor.Respuestas:
Insomnio,
1039998 * 8 = 784George Boole , 1815
Los 5 programas siguientes tienen la misma duración (98) y la misma salida.
Huellas dactilares
Hello, George Boole!
Insomnio, 103 * 6 = 618 (probablemente óptimo y único)
Si
G Boole
( George Boole , 1815) es aceptable ...Huellas dactilares
Hello, G Boole!
Insomnio,
9492898583 * 10 = 830Kurt Godel, 1906.
Huellas dactilares
Hello, Kurt Godel!
Escribí un programa para buscar la solución. Mi segunda versión del programa debería estar más cerca de lo óptimo que mi primera versión.
Según el nitpick de @Martin Büttner (
100928885 caracteres, el mismo conjunto de caracteres):Huellas dactilares
Hello, Kurt Goedel!
Interprete
fuente
Gödel
usar solo el alfabeto latino esGoedel
. ;)CJAM,
230117115114113110107106 bytes * 13 = 1378Pruébalo aquí.
Elegí
Edsger Dijkstra
, nacido en 1930, lo que me dac#2&$1>b()* 3
(a quien realmente elegí porque fue el primero que encontré cuyo nombre produjo caracteres útiles para CJam; he revisado una docena de nombres desde entonces y ninguno parecía tan prometedor).El código se basa, básicamente, sólo los códigos ASCII usando
1
,2
,3
,*
,#
(exponenciación) y(
,)
(decremento, incremento) y los convierte a un personaje conc
. Para guardar algunos caracteres, a veces puedo copiar un carácter anterior con$
(0$
copia el elemento de la pila superior,1$
copia el elemento de la pila de segundo a superior, etc.).Aquí está el desglose del código en caracteres (esto también es ejecutable):
fuente
Maravilloso , 83 bytes * 10 = 830
Elegí lo
R Kowalski, 1941
que me permite usar:{It9A+6=53
Esta es un poco más compleja que la respuesta anterior (a continuación) ya que muchas canicas pasan por múltiples dispositivos, en general, la mayoría de las canicas solo tienen algunas cosas agregadas antes de imprimirse. Debido a que no tenía sustracción o números bajos, los códigos ASCII más bajos tuvieron que formarse sumando fusionando dos canicas de alto valor, ya que esto da como resultado un módulo de suma. (Lo he usado
=3
como deflector ya que empuja cada canica no igual a 3 a la derecha y se ve como un lindo gato)salida:
Hello, R Kowalski!
vieja respuesta:
Maravilloso , 113 * 17 = 1921
Marbelous está bien aquí, ya que cada vez que se imprime el mármol que se cae del tablero, debido a su naturaleza 2D, necesita algunos números + algo de aritmética para no dejar que el borad se vuelva demasiado grande.
Elegí
Philip D. Estridge, 1937
quién cedeu./26EiSj9:8*-+
como el conjunto de caracteres disponible. Los caracteres realmente utilizados son.+-245689E
El tablero es bastante simple, las primeras 3 filas son literales, cada grupo de dos es un valor hexadecimal, la cuarta fila son operaciones aritméticas para formar los códigos ascii que no se pudieron escribir explícitamente debido a los conjuntos de caracteres limitados.
salida:
Hello, Philip Donald Estridge!
¡Puedes probarlo aquí!
Ahora buscaré un posible mejor candidato, ya que parece maravilloso en realidad podría ser competitivo aquí.
fuente
G Boole
con 105 caracteres * 6: creo que debería haber un límite en la cantidad de nombre que se puede acortar.Using this set and only this set (no tabs, no newlines) of shifted printable ASCII characters
Brainfuck, 1846 * 12 = 22152
Solo por tener un idioma que no sea CJam. Requiere especificación original Brainfuck con tipo de datos de bytes, que se desborda a 256.
Solo usa 2 caracteres:
+
para incrementar la celda actual y.
para generar la celda actual.Salida
El crédito va a Coredump por revelar lo siguiente en su respuesta:
fuente
"¡Hola, Niklaus Emil Wirth!" (Befunge-98, 222 × 14 = 3108)
De Wikipedia :
Con un turno de 34,
Niklaus Emil Wirth
(18 caracteres, 14 únicos) termina comop,./$86Bg0,/By,57+
.Código ( pruébalo aquí ):
Descompostura:
La última línea coloca un carácter HALT (
@
) al comienzo de la línea. Cuando el control vuelve a este punto, el programa se detendrá. En realidad, esto no debería ser necesario, porque el@
carácter en (5,0) todavía está allí y no se debe mostrar nada antes de llegar a él. Sin embargo, el único intérprete en línea de Befunge que ejecutará esta monstruosidad no funcionará correctamente sin él.En realidad, es posible hacer una solución de trabajo con solo
Niklaus Wirth
(12 caracteres únicosp,./$86By,57+
), pero el código es mucho, mucho más largo.(Etiquetado como Befunge-98 porque Befunge-93 está limitado a un ancho de 80 caracteres).
fuente
CJam, 323 bytes * 10 = 3230
Salida:
CJam, 662 bytes * 10 = 6620
8700No para ganar sino solo porque parece posible. Solo lo usó
2e(c
.Salida:
Generador
La respuesta trivial
222(((((((((((c
(generada porq{i222_@-'(*'c}%
) tiene 3420 bytes.fuente
e_
literales de números externos.2
? O mediante el uso de los otros caracteres (útiles)B
,5
y$
? (Por ejemplo, puede obtener del segundo al cuarto espacio y el segundo y tercer período con2$
, así comoA
con el2$((
.)CJam, 16 *
307288 =49124608Muestra:
Esta es mi primera respuesta usando CJam, por lo que seguramente esto puede jugar mejor (cualquier sugerencia es bienvenida).
Aquí hay un código de utilidad que utilicé. Como calculé el conjunto de caracteres para algunos otros nombres, esto puede ser útil para alguien que conoce mejor CJam (o tal vez para otro idioma).
fuente
Brainf_ck - 723 * 12 = 8676
Hice un rastreo de la Lista de científicos informáticos de Wikipedia y recopilé los años de nacimiento y los nombres más largos de todas las personas que figuran allí. Escribí un programa para repasar todo esto y encontrar cualquier cosa que pudiera hacer en un lenguaje común. Por desgracia, no he podido encontrar ningún nombre que podrían apoyar
echo;
,alert()
,console.log()
(lo que puedo esperar),print
omain
.Principalmente quería compartir mis datos de rastreo sin procesar en caso de que alguien quisiera buscar otros idiomas de manera similar (nota: puede ser inexacto e incompleto): Datos de rastreo .
EDITAR : Nueva pasta de rastreo con aproximadamente 40 nombres nuevos de la Lista de personas informáticas y la Lista de pioneros en informática .
EDITAR : limpió manualmente la lista.
Encontré que Jean David Ichbiah (1940), diseñador jefe de Ada, proporciona
+-.
(la más baja de las tres personas para hacerlo). Genere este código BF para él.Alexander Keewatin Dewdney proporcionó los caracteres BF más útiles (
+.<>
), pero llegó un poco por encima de mi respuesta. No encontré a nadie proporcionado.[]
.fuente
Rubí 1.8 - 250 × 18 = 4500
Personajes disponibles:
Salida:
Anatolii Karatsuba , nacido en 1937, es más conocido por sus contribuciones al campo de la teoría de números analíticos (un campo que personalmente disfruto), incluido el Algoritmo de Karatsuba , un método para la multiplicación rápida de operandos de precisión arbitraria.
Este es el primer y único nombre que probé.
fuente
GolfScript (125 * 14 = 1750)
Demostración en línea
Douglas Engelbart (1925 - 2013) es quizás el más famoso por la "Madre de todas las demostraciones" . Su nombre y año de nacimiento dan caracteres
!&(),-./9]^z{~
, de los cuales esta solución utiliza&()-./9]^~
La estructura básica del código es la
build list of numbers](-
que coloca muchos números en una matriz con la cadena vacía que comienza en la pila, luego extrae esa cadena y la usa con la promoción de tipo de-
para convertir la matriz de números en una cadena.Como no hay acceso a los elementos debajo de la parte superior de la pila, escribí un programa de C # para encontrar fragmentos cortos que toman un entero determinado en la parte superior de la pila y agregan el siguiente entero requerido. Esto creó un pequeño problema, cuando el fragmento para
69
(E
) terminó-
y el fragmento para110
(n
) comenzó con9
: le costó a un personaje utilizar un fragmento más largo para110
.fuente
CaneCode ,
458410 * 16 =73286560BF correspondiente:
Salidas:
CaneCode es solo una sustitución de símbolo directo de Brainfuck, donde
12348
corresponde+-><.
respectivamente. Pasé unas 2 horas tratando de buscar un nombre corto que le diera+-.
Brainfuck normal, sin éxito.Jack Elton Bresenham , inventor del algoritmo de línea de Bresenham y nacido en 1937, da los siguientes caracteres:
Desafortunadamente, mientras
5
([
) está disponible, la falta de6
(]
) significa que el código todavía tuvo que incrementar el área de 100 ish (para caracteres en minúscula) de manera lenta.fuente
> <> (Pez) , 163 * 15 = 2445
Salidas:
Ivar Hjalmar Jacobson , nacido en 1939, fue encontrado gracias a los datos de rastreo de BMac . El provee los caracteres
> <>, como Befunge, es un lenguaje 2D basado en pila. Los útiles> <> comandos son:
*+24567
para aritmética (nota que47
empuja a4
y a7
en la pila, no47
))
para mayor que (útil para obtener1
):
para duplicar la parte superior de la pilao
para salida;
para la terminación del programap
También es bueno para la reflexión, pero no pude pensar en un buen uso para él.>
es otro comando> <>, que dirige el flujo del programa hacia la derecha, pero como el programa ya se ejecuta en esa dirección, no era necesario.fuente