Sua tarefa é pegar um n
elemento n
de entrada e saída da Rummy Sequence, uma sequência que eu criei (ver o OEIS não ajudará).
Definição
Cada elemento da sequência Rummy é um conjunto de valores de verdade ou falsey. Ex [true, false]
. : .
As etapas para produzir um membro da sequência Rummy são bastante simples:
- Comece com o primeiro índice
[]
(este é o elemento 0). - Defina a falsey mais à esquerda como verdade. Se não houver falseys a serem alterados, aumente o comprimento da lista em 1 e defina todos os membros da nova lista como falsey.
- Repita a etapa 2 até alcançar o elemento
n
.
Exemplo
Vamos definir nossa função como rummy(int n)
(o material {}
é um passo dado para chegar à resposta):
>>> rummy(5)
{[]}
{[false]}
{[true]}
{[false, false]}
{[true, false]}
[true, true]
Regras
- Aplicam-se brechas padrão.
- Deve funcionar para as entradas 0 através do limite numérico superior do seu idioma.
- Você pode enviar da maneira que achar melhor, desde que fique claro que a saída é um conjunto de verdade / falso.
Curiosidades
Eu chamo isso de "Sequência Rummy" porque, começando no índice 2, define os conjuntos que você precisa estabelecer em cada rodada do Rummy Progressivo , onde a falsey é um livro e a verdade é uma corrida.
Casos de teste
>>> rummy(0)
[]
>>> rummy(1)
[false]
>>> rummy(6)
[false, false, false]
>>> rummy(20)
[true, true, true, true, true]
>>> rummy(1000)
[true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]
code-golf
math
array-manipulation
Addison Crump
fonte
fonte
1
a11
, você recebe o que000
não100
. ; P1*0*
.Respostas:
JavaScript ES6,
949272706664 bytesEconomizou 6 bytes graças a Neil!
Eu não acho que isso possa ser jogado mais. Pelo menos com as equações.
Explicação
São duas equações principais (
n
é entrada):Isso fornecerá o tamanho total da matriz de saída. No meu programa, eu usei, em
>>1
vez(...)/2
disso, são os mesmos que o primeiro bit em binário tem um valor de 2. Mudar resultará emfloor(.../2)
Esta é a quantidade de
true
s que haverá.a
é o resultado da expressão anterior.Isto é o que a sintaxe faz:
Este código gera uma matriz com intervalo
[0, n)
nesta respostan
é a primeira equação..map((_,l)=>l<n)
isso passará pelo intervalo acima,l
é a variável que contém o item atual no intervalo. Se o item for menor que a quantidade de verdadeiras (determinada pela segunda equação), ele retornarátrue
, caso contráriofalse
.fonte
>>1
vez de/2|0
. Use em(_,l)=>
vez de.keys()
.Array.from()
?, Fill ou algo mais?[...Array(a)].map((_,l)=>)
que eu acho que é um pouco mais curto, mas é bom pegar alguns()
s ao mudar para>>1
, eu não tinha percebido isso!a*-~a/2
; Não sei por que não pensei nisso antes.Python, 51 bytes
Produz uma lista de 1 e 0.
fonte
Pitão, 8 bytes
Experimente on-line: Demonstration or Test Suite
Isso é exponencialmente lento.
Explicação:
fonte
Geléia ,
1311 bytesO código não funciona na versão mais recente do Jelly antes do lançamento do desafio, mas funcionou nesta versão , que antecede o desafio.
Os índices são baseados em 1. Experimente online! (leva alguns segundos) ou verifique várias entradas ao mesmo tempo .
Como funciona
fonte
05AB1E, 27 bytes
Vou ver se consigo jogar um pouco mais e adicionar uma explicação pela manhã.
Experimente online
fonte
Java,
117110 bytescriei meu próprio tipo booleano, o que me permitiu economizar 7 bytes
fonte
Python 2,
6963 bytesTeste em Ideone .
fonte
Python 2, 61 bytes
Resolve para n = j · (j + 1) / 2 . A entrada é retirada do stdin.
Uso da amostra
Demo .
fonte
APL (Dyalog Extended) , SBCS de 21 bytes
Experimente online!
fonte