Haz un RNG perdido

17

Lost es un lenguaje de programación 2D en el que la posición de inicio y la dirección de la IP son completamente aleatorias.

Esto hace que sea muy difícil hacer programas deterministas de Lost. Sin embargo, hoy no estamos escribiendo un programa determinista, estamos escribiendo un RNG.

Escriba un programa Perdido que no ingrese y genere un solo dígito (0,1,2,3,4,5,6,7,8 o 9), con todos los dígitos con la misma probabilidad de ser emitidos. Dado que la ubicación y dirección de inicio de Lost es la única fuente de aleatoriedad, la única forma de hacerlo es hacer que cada ubicación en su fuente genere un número diferente de 0 a 9 con un número igual que genere cada dígito.

Puede calcular la probabilidad de cada dígito utilizando la -Qbandera y canalizándola en este script de Python

import sys
a=sys.stdin.read().split()[:-1]
for x in range(10):print x,':',a.count(`x`)
print[x for x in a if x not in list("1234567890")]

Pruébalo en línea!

Este es el por lo que las respuestas se puntuarán en bytes, siendo mejores menos bytes.


Una visión general de Lost

Lost es un lenguaje envolvente IO 2D implícito que toma mucho del molde de Klein. Aquí hay una hoja de trucos rápida de lo que hacen los comandos perdidos

  • \, /, |Espejos del IP

  • <, ^, >, vPuntos la ip en una dirección

  • [Refleja la ip si se mueve hacia el este; se convierte ]si la ip se mueve horizontalmente

  • ]Refleja la ip si se mueve hacia el oeste; se convierte [si la ip se mueve horizontalmente

  • ! Salta la próxima operación

  • ? Salta de la parte superior de la pila y salta si no es cero

  • : Duplica la parte superior de la pila.

  • $ Intercambia los dos primeros elementos de la pila

  • ( Aparece de la pila y empuja al alcance

  • ) Aparece del alcance y empuja a la pila

  • 0- 9empuja n a la parte superior de la pila

  • "Inicia y finaliza una cadena literal. Durante una cadena, los comandos literales no se ejecutan y, en cambio, sus valores de caracteres se envían a la pila.

  • + Agrega los dos primeros números

  • * Multiplica los dos números superiores

  • - Multiplica la parte superior por -1

  • % Desactiva la seguridad.

  • # Enciende la seguridad

  • @ Finaliza la ejecución si la seguridad está desactivada (comienza)

Post Rock Garf Hunter
fuente
¿Qué sucede si intentas intercambiar dos valores de la pila pero solo hay un valor o intentas saltar de una pila vacía?
pppery
@ppperry La pila se rellena con ceros implícitos.
Post Rock Garf Hunter
1
Demasiada poca información sobre el lenguaje. ¿Se envuelve? ¿Qué significa 'seguridad'? ¿La descripción de los brazaletes es engañosa? ¿Cómo se usa el alcance?
Zarigüeya muerta
@DeadPossum Traté de mantenerlo conciso. Se envuelve. La seguridad ya se explica en la pregunta. No sé a qué te refieres con los corchetes. []actuar como puertas, <>señalar en direcciones y ()almacenar y recuperar del alcance. El alcance se usa para almacenar valores.
Post Rock Garf Hunter
@WheatWizard ¿Entonces la seguridad es solo una condición @o tiene otros casos de uso? Sobre soportes, no entiendo esta parte: becomes ] if the ip is moving horizontally. Moverse hacia el este también es horizontal, ¿no?
Dead Possum

Respuestas:

12

81 101 bytes

Esto podría ser golfable aún más ...

>%(0@>%(1@>%(2@>%(3@>%(4@>%(5@>%(6@>%(7@>%(8@>%(9@
^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<

Pruébalo en línea!

pppery
fuente
1
Enfoque interesante! No había pensado en eso
Post Rock Garf Hunter
1
101 bytes que corrige la doble impresión. Acabo de agregar un pop de pila antes de que se desactive la seguridad, por lo que si aciertas el número al principio, puede reventarlo, empujarlo nuevamente y luego morir. Sin embargo, no sé si esto sigue siendo técnicamente un azar uniforme ...
Arnold Palmer
1
Literalmente se me ocurrió la misma idea al mismo tiempo ...
pppery
1
Su salida no es uniforme. 0Ocasión de 7/101 de imprimirse (cualquiera de los <o ^por debajo de su bloque, más el >y %símbolos), 1- 8tener una oportunidad 10/101, y 9tiene la oportunidad 11/101. Entonces parece que puede haber una posibilidad de que continúe para siempre.
Arnold Palmer
1
Tiene que ajustarse, o de lo contrario esto terminaría cuando comience en la línea superior hacia arriba.
pppery
9

Perdido , 54 bytes

>%(0@>%(1@
@>%(2@>%(3
5@>%(4@>%(
(7@>%(6@>%
%(9@>%(8@>

Pruébalo en línea!

Acabo de copiar la respuesta de pppery y hacer algunas cosas al azar. No sé nada sobre el lenguaje perdido. E incluso no sé qué sucede con los códigos anteriores. ¿Esto es trabajo? (No lo sé)

tsh
fuente
Su código produce la mitad de la salida que ppperry, supongo que es por cómo -Qfunciona. La salida parece distribuida normalmente de todos modos. Hubiera sido bueno tener una especificación completa del idioma vinculado en la pregunta.
Aaron
@ Aaron, debería haber explicado cómo -Qfunciona. Como el lenguaje es aleatorio, la verificación se realiza ejecutando todas las posibilidades. -Qhace esto e imprime todos los resultados. Cuanto más corto es el programa, menos posibilidades hay y menos salidas provienen de-Q .
Post Rock Garf Hunter