Desafio
Estou sob ataque da equipe da meia-noite e preciso convocar o Catenative Doomsday Dice Cascader para me defender. Como estou com pouco espaço, preciso que o código seja o mais curto possível.
O algoritmo para o Cascader de Dados do Dia do Juízo Final Catenativo é o seguinte:
Primeiro, o dado de seis lados no Prime Bubble é rolado e o resultado determinará quantas iterações da próxima etapa ocorrerão.
Comece com um dado de seis lados. Por quantas vezes o rolo do dado Prime Bubble, multiplique o número de lados no próximo dado pelo resultado do rolo do dado atual. Por exemplo, se no seu primeiro lançamento do dado de seis lados o seu lançamento for 2, seu próximo dado terá 6 * 2 = 12 lados.
Seu objetivo é escrever uma função ou programa que não receba nenhuma entrada e produz o resultado final do último dado rolado. Como se trata de código-golfe , a contagem de bytes mais baixa em cada idioma vence!
Exemplos
Exemplo # 1 (extraído diretamente do link acima):
The Prime Bubble rolls a 6, meaning that the Cascader will iterate six times
#1: We always start with a 6 sided die, and it rolls a 2, so the next die has 6x2=12 sides
#2: The 12 sided die rolls an 8, meaning that the third die has 12x8=96 sides
#3: The 96 sided die rolls a 35, meaning that die 4 has 96x35=3360 sides
#4: The 3360 sided die rolls a 2922, so die 5 has 3360x2922 = 9,817,920 sides
#5: The 9.8 million sided die rolls a 5,101,894, so the final die has 50,089,987,140,480 sides
#6: The 50 trillion sided die rolls a one. Hooray.
Since the last die rolled gave a 1, your function or program should output 1.
Exemplo 2
The Prime Bubble rolls a 2, meaning that the Cascader will iterate twice.
#1: We always start with a 6 sided die, and it rolls a 4, so the next die has 6x4 = 24 sides
#2: The 24 sided die rolls a 14
Since the last die rolled gave a 14, your function or program should output 14.
Respostas:
Python 2 ,
7669 bytesExperimente online!
fonte
Perl 6 ,
4337 bytes-6 bytes graças a nwellnhof
Experimente online!
Bloco de código anônimo que retorna o resultado dos dados do dia do juízo final.
Explicação:
fonte
Wolfram Language (Mathematica) , 43 bytes
Experimente online!
fonte
J , 21 bytes
Experimente online!
+6 bytes graças a um problema de lógica detectado pelo FrownyFrog
NOTA: J não possui verbos niládicos. No entanto, esse verbo funcionará da mesma forma, independentemente do argumento que você fornecer. No exemplo do TIO, estou chamando
0
, mas eu poderia ter usado99
ou''
também.quão
1+
adicione um a ...[:?
um único rolo de um dado de face n (lados lendo0
paran-1
), onde o númeron
é determinado por ...(*1+?)
pegue o argumento atualy
e role?
para produzir um número aleatório entre0
ey-1
.1+
faz que1
ay
, inclusive. Finalmente,*
cria um gancho em J, que multiplicará issoy
novamente.^:
faça isso acima muitas vezes ...(?`])
?
role o argumento inicial, ou seja6
, para determinar quantas vezes repetir. Se rolarmos0
(correspondendo a um1
no Prime Bubble), o argumento passará inalterado. A]
indica que6
, inalterado, será o valor de partida de repetida(*1+?)
verbo que determina o valor dado para o rolo final.@6x
anexa o verbo constante6
, para que possamos chamá-lo com qualquer coisa, e asx
forças J a usar a computação de número inteiro estendida que precisamos para os números possivelmente grandes.fonte
in this case 0 executes the previous verb once, 1 twice, etc
por que é que?K (oK) , 32 bytes
Solução:
Experimente online!
Comece com 6 e "1 escolha 6", itere sobre "1 escolha 6" vezes:
Você pode ver as iterações alternando para uma varredura , por exemplo
fonte
(*).x
->*/x
e{
}/[*a;6,a:1+1?6]
->a{
}/6,a:*1+1?6
Geléia , 9 bytes
Um link niládico que gera um número inteiro positivo.
Experimente online!
Salvando um byte sobre o mais óbvio
6X×$6X’¤¡X
Quão?
fonte
05AB1E , 10 bytes
A escolha aleatória incorporada para listas grandes é muito lenta, portanto, pode resultar em um tempo limite se o lançamento do Prime Bubble for, por exemplo, um 6.
Experimente on-line ou on -line com impressões adicionais para ver os rolos . (O TIO usa a versão herdada do 05AB1E, pois é um pouco mais rápida.)
Explicação:
fonte
Geléia , 9 bytes
Experimente online!
A resposta de Jonathan Allan afirma que é
. De fato, não precisamos fazer uma modificação tão grande. Portanto, essa é uma abordagem alternativa à resposta de Jonathan Allan e, também, um local de descanso para meu 6-byter inicial inválido. :(
fonte
Perl 5 , 54 bytes
Experimente online!
fonte
Carvão , 16 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Pressione 6 para a lista predefinida.
Repita um número aleatório de vezes de 1 a 6 ...
... envie um número aleatório entre 1 e o produto da lista para a lista.
Envie o último número enviado para a lista.
Abordagem alternativa, também 16 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Defina o número de lados para 6.
Repita um número aleatório entre 0 e 5 vezes ...
... multiplique o número de lados por um número aleatório de 1 para o número de lados.
Imprima um número aleatório de 1 ao número de lados.
fonte
Python 3 , 76 bytes
Experimente online!
-2 bytes graças ao TFeld
fonte
R , 43 bytes
Experimente online!
k
controla o número atual de faces no dado. Usa o fato de queT
é inicializado como1
.Tentei algumas outras coisas, mas não consegui superar essa abordagem simples e direta.
fonte
Gelatina , 10 bytes
Experimente online!
Explicação
fonte
Ruby , 41 bytes
Experimente online!
Explicação
fonte
Java 10,
2149386 bytesExperimente on-line ou on -line com linhas de impressão adicionais para ver as etapas .
int
java.math.BigInteger
int
long
BigInteger
int
BigIntegers
Explicação:
fonte
int
int
tipoPHP , 59 bytes
expandido:
Não tenho certeza se devo incluir a tag aberta.
Na minha máquina, ele trava se
$s*$r
for muito grande, para que não seja impresso$q>=5
algumas vezes ... porque os números ficam muito grandes. Não tenho certeza de uma correção.fonte
Pitão , 14 bytes
Experimente online!
fonte
C # (.NET Core) , 136 bytes
Experimente online!
Estou bastante certo de que este obras, dada a assunção de comprimento inteiro infinito que estamos Apaixonado por aqui. Se eu realmente tiver que lidar com o estouro, precisaria interromper uma classe totalmente diferente.
fonte
System.ArgumentOutOfRangeException: 'maxValue' must be greater than zero
int
long
BigIntegers
Julia 1.0 , 60 bytes
b=big(6)
faz funcionar com números inteiros de tamanho arbitrário Experimente online!fonte
Gaia , 13 bytes
Experimente online!
fonte