Faça um RNG perdido


17

Lost é uma linguagem de programação 2D onde a posição inicial e a direção do ip são inteiramente aleatórias.

Isso torna muito difícil criar programas perdidos determinísticos. No entanto, hoje não estamos escrevendo um programa determinístico, estamos escrevendo um RNG.

Escreva um programa Lost que não aceite nenhuma entrada e produza um único dígito (0,1,2,3,4,5,6,7,8 ou 9), com todos os dígitos com a mesma probabilidade de serem produzidos. Como o local e a direção de início de Lost são a única fonte de aleatoriedade, a única maneira de fazer isso é fazer com que todos os locais em sua fonte produzam um número diferente de 0 a 9, com um número igual imprimindo cada dígito.

Você pode calcular a probabilidade de cada dígito usando a -Qflag e direcionando-a para esse 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")]

Experimente online!

Isso é então as respostas serão pontuadas em bytes, com menos bytes sendo melhores.


Uma visão geral de Lost

Lost é uma linguagem 2D implícita de IO que envolve muito do molde de Klein. Aqui está uma rápida tabela de dicas sobre o que os comandos perdidos fazem

  • \, /, |Espelhos do ip

  • <, ^, >, vAponta o ip em uma direção

  • [Reflete o ip se estiver se movendo para o leste; torna- ]se se o ip está se movendo horizontalmente

  • ]Reflete o ip se estiver se movendo para o oeste; torna- [se se o ip está se movendo horizontalmente

  • ! Ignora a próxima operação

  • ? Aparece no topo da pilha e salta se não for zero

  • : Duplica a parte superior da pilha

  • $ Troca os dois principais itens da pilha

  • ( Aparece da pilha e empurra para o escopo

  • ) Aparece do escopo e empurra para a pilha

  • 0- 9empurra n para o topo da pilha

  • "Inicia e termina uma string literal. Durante uma string, comandos literais não são executados e, em vez disso, seus valores de caracteres são enviados para a pilha.

  • + Adiciona os dois primeiros números

  • * Multiplica os dois principais números

  • - Multiplica o topo por -1

  • % Desliga a segurança

  • # Liga a segurança

  • @ Finaliza a execução se a segurança estiver desativada (inicia)


O que acontece se você tentar trocar dois valores da pilha, mas houver apenas um valor ou tentar sair de uma pilha vazia?
pppery

@ppperry A pilha é preenchida com zeros implícitos.
Post Rock Garf Hunter

11
Informações muito baixas sobre o idioma. Envolve? O que significa 'segurança'? A descrição dos braceletes é enganosa? Como o escopo é usado?
Gambá morto

@DeadPossum Tentei mantê-lo conciso. Envolve. A segurança já está explicada na pergunta. Não sei o que você quer dizer sobre os colchetes. []agir como portas, <>apontar direções e ()armazenar e recuperar do escopo. O escopo é usado para armazenar valores.
Post Rock Garf Hunter

@ WheatWizard Então a segurança é apenas uma condição para @ou tem outros casos de uso? Sobre suportes, eu não entendo esta parte: becomes ] if the ip is moving horizontally. Mover-se para o leste também é horizontal, não é?
Gambá morto

Respostas:


12

81 101 bytes

Isso pode ser ainda mais jogável ...

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

Experimente online!


11
Abordagem interessante! Eu não tinha pensado nisso
Post Rock Garf Hunter

11
101 bytes que corrigem a impressão dupla. Acabei de adicionar uma pilha pop antes que a segurança seja desativada; se você acertar o número no início, ele pode estourá-lo, empurrá-lo novamente e morrer. Eu não sei se isso ainda é tecnicamente um embora aleatório uniforme ...
Arnold Palmer

11
Eu literalmente veio com a mesma idéia ao mesmo tempo ...
pppery

11
Sua saída não é uniforme. 0tem uma chance de 7/101 de ser impressa (qualquer uma <ou ^abaixo do bloco, mais o símbolo >e %), 1- 8tem uma chance de 10/101 e 9tem uma chance de 11/101. Então parece que pode haver uma chance de continuar para sempre.
Arnold Palmer

11
Ele precisa ser encapsulado, ou isso terminaria quando iniciar na linha superior subindo.
pppery

9

Perdido , 54 bytes

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

Experimente online!

Apenas copiei da resposta de pppery e fiz algumas coisas aleatórias. Não sei nada sobre a linguagem Lost. E eu nem sei o que está acontecendo nos códigos acima. Isso é trabalho? (Eu não sei)


Seu código produz metade da saída do ppperry, acho que é por causa de como -Qfunciona? A saída parece normalmente distribuída de qualquer maneira. Teria sido bom ter uma especificação completa do idioma vinculado na pergunta.
Aaron

@ Aaron Eu deveria ter explicado como -Qfunciona. Como o idioma é aleatório, a verificação é feita executando todas as possibilidades. -Qfaz isso e imprime todos os resultados. Quanto mais curto o programa, menos possibilidades existem e menos resultados provêm -Q.
Post Rock Garf Hunter
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.