Lost è un linguaggio di programmazione 2D in cui la posizione iniziale e la direzione dell'ip sono completamente casuali.
Ciò rende molto difficile realizzare programmi Lost deterministici. Tuttavia oggi non stiamo scrivendo un programma deterministico, stiamo scrivendo un RNG.
Scrivi un programma Lost che non accetta input e genera una singola cifra (0,1,2,3,4,5,6,7,8 o 9), con tutte le cifre che hanno la stessa probabilità di essere emesse. Poiché la posizione e la direzione di partenza di Lost sono l'unica fonte di casualità, l'unico modo per farlo è avere ogni posizione nella tua fonte in uscita un numero diverso da 0 a 9 con un numero uguale che emette ogni cifra.
Puoi calcolare la probabilità di ogni cifra usando il -Q
flag e eseguendo il piping in questo script 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")]
Questo è code-golf, quindi le risposte verranno classificate in byte con meno byte migliori.
Una panoramica di Lost
Lost è un implicito linguaggio IO 2D implicito che prende molto dallo stampo di Klein. Ecco un breve cheat di cosa fanno i comandi persi
\
,/
,|
Specchi l'ip<
,^
,>
,v
Punti l'ip in una direzione[
Riflette l'ip se si sta spostando verso est; diventa]
se l'ip si muove in orizzontale]
Riflette l'ip se si sta spostando verso ovest; diventa[
se l'ip si muove in orizzontale!
Salta l'operazione successiva?
Esce dalla parte superiore dello stack e salta se non zero:
Duplica la parte superiore della pila$
Scambia i primi due oggetti della pila(
Esce dallo stack e passa all'ambito)
Viene estratto dall'ambito e viene inserito nello stack0
-9
spinge n in cima alla pila"
Inizia e termina una stringa letterale. Durante una stringa i comandi letterali non vengono eseguiti e invece i loro valori di carattere vengono inseriti nello stack.+
Aggiunge i primi due numeri*
Moltiplica i primi due numeri-
Moltiplica la parte superiore per -1%
Disattiva la sicurezza#
Attiva la sicurezza@
Termina l'esecuzione se la sicurezza è disattivata (inizia attivata)
[]
agire come porte, <>
puntare in direzioni e ()
memorizzare e richiamare dal campo di applicazione. L'ambito viene utilizzato per memorizzare i valori.
@
o ha altri casi d'uso? A proposito di staffe, non capisco questa parte: becomes ] if the ip is moving horizontally
. Anche spostarsi verso est è orizzontale, no?