Esse desafio de encadeamento de respostas terminou oficialmente, resultando na vitória do Assistente de Trigo , com um total de 7 respostas. Qualquer outra resposta é bem-vinda, mas não influenciará a resposta aceita para esse desafio, nem o vencedor.
Tarefa:
Imprima todos os divisores positivos de um número x
obtido como entrada.
Entrada:
Um único número x
que é o número (na base 10) cujos divisores positivos devem ser calculados.
Resultado:
Todos os divisores positivos de x
. Qualquer formato é permitido, incluindo \n
, ,
, ;
e espaços em branco como separadores, contanto que é compreensível. A saída também pode ser uma matriz de números inteiros ou seqüências de caracteres (por exemplo:) [1, 2, 3, 5, 30]
. Você pode enviar os divisores para stdout, console ou equivalente no seu idioma ou eles podem ser retornados de uma função .
Regras
- Um usuário não pode responder duas vezes seguidas
- Sua resposta pode remover, adicionar ou substituir no máximo 15 caracteres da resposta anterior (o espaço em branco não conta), além da resposta 2, que pode "transformar" até 20 caracteres para começar.
- Você não tem permissão para postar uma resposta em uma linguagem de programação que já tenha uma resposta, a exceção sendo uma versão completamente diferente dessa linguagem (por exemplo: se eu postar uma resposta em
Python 2.7
, você pode enviá-laPython 3
, mas não emPython 2.6
) - Não são permitidas brechas padrão
- Você não tem permissão para usar built-ins para obter divisores , por causa deste desafio
- Você deve incluir o número da resposta e o nome do idioma no título da pergunta e o número de caracteres alterados em relação à resposta anterior.
Pontuação
O usuário com o maior número de envios assim que as coisas resolvem vence. Em caso de empate, o usuário com a maior pontuação em uma das respostas ganha. Se também houver um empate na pontuação, o usuário com o envio mais antigo (resposta mais antiga com pontuação mais alta) será declarado vencedor.
Nota: "liquidar" <=> 7 3 dias se passaram desde que a última resposta foi enviada
Exemplos:
Input, Output:
14 => [1, 2, 7, 14]
25 => [1, 5, 25]
65 => [1, 5, 13, 65]
114 => [1, 2, 3, 6, 19, 38, 57, 114]
Ou qualquer outra saída equivalente que satisfaça as condições mencionadas.
Nota final : Essa pergunta é melhor se você classificar as respostas pelas mais antigas. Vou postar a primeira resposta no Python 2.7, então você deve postar a segunda resposta, dependendo dessa. Boa sorte e divirta-se!
Entre os melhores:
Esta lista pode estar desatualizada, fique à vontade para editá-la:
1) Assistente de Trigo [Líder Atual 🏆] : 7 respostas - Python 1.6 , 05AB1E , Na verdade , Del | m | t , FSM , FSM , Brain-Flak , Lenguage
2) Riley: 3 respostas - Sério , CJam , 2sable
3) Jonathan Allan: 2 respostas - Python 3 , geléia
3) ETHproductions: 2 respostas - Japt , Pyth
3) Mistah Figgins: 2 respostas - Befunge-98 , Brain-Flak Classic
6) Riker: 1 resposta - MATL
6) dzaima: 1 resposta - SOGL 0.8.2
6) LegionMammal978: 1 answer - Espaço em branco
6) Nick Clifford: 1 resposta - Ohm
6) Lynn: 1 resposta - GolfScript
6) MickyT: 1 resposta - Cubix
Calculadora de distâncias
Você pode usar esse snippet para calcular a distância entre duas entradas:
function L(s,t){if(s===t)return 0;var S=s.length,T=t.length;if(S*T===0)return S+T;for(var i=0,v0=[],v1=[];i<=T;i++)v0[i]=i;for(i=0;i<S;i++){v1[0]=i+1;for(var j=0;j<T;j++)v1[j+1]=Math.min(v1[j]+1,v0[j+1]+1,v0[j]+(s[i]!=t[j]));for(j=0;j<=T;j++)v0[j]=v1[j]}return v1[T]}
<textarea id=A rows=10></textarea><textarea id=B rows=10></textarea><br>
Distance: <span id=O>0</span> <button onclick="O.innerHTML=L(A.value.replace(/\s/g,''),B.value.replace(/\s/g,''))">Run</button>
fonte
Respostas:
Resposta 20, Flacidez Cerebral , 11
Gostaria de agradecer a todos que ajudaram a contribuir para esse objetivo:
Riley, 20 bytes
LegionMammal, 15 bytes
ETHproductions, 11 bytes
Lynn, 1 byte
Os seguintes usuários não foram capazes de contribuir com bytes diretamente, mas ajudaram de outras maneiras:
Mistah Figgins
DJMcMayhem
feersum
Obrigado a todos por tornar isso possível!
Experimente online!
fonte
Resposta 3: MATL, Distância 15
fonte
%
torna muito difícil continuar. Boa sorte para os outros e eu realmente espero que este desafio não "morra" aqui!Z\
. O código relevante aqui é a:tGw\~)
(o que eu escrevi no bate-papo, não um builtin)Z\
, não\
, é "divisores". O título nos últimos três colunas indica o prefixo (X
,Y
ouZ
).\
por si só é a primeira coluna, ou seja, "mod"Resposta 7, Japt, 15
Experimente online!
Alterou
#b∫I:b;\?t
paraò f!vU
(10 pontos) e adicionou um pouco mais de código Brain-Flak alterando~(()
para((()<>))
(5 pontos). Acredito que o código para o qual estamos trabalhando éExplicação
fonte
Resposta 8, 05AB1E , 14
Experimente online!
Explicação
Felizmente, o 05AB1E possui um interpretador Python interno (das sortes). Para fazer essa corrida, empurramos
como uma string no topo da pilha. Temos que usar literais de string em vez de comentários aqui, porque 05AB1E realmente não gosta de comentários em seu código Python. Também precisamos nos livrar do
"
código original, pois isso faz com que a string termine prematuramente.Depois que a string é pressionada, usamos
.e
para executá-la como código python.Trabalhe em direção ao Brain-Flak
Consegui adicionar 5 caracteres extras para o objetivo de fazer uma resposta Brain-Flak. Eu seria capaz de adicionar 6, mas infelizmente esqueci que o espaço em branco não conta para a pontuação.
Até agora, temos:
fonte
Resposta 13, Pitão , 15
Experimente online!
Explicação
Portanto, não conheço muito Pyth, mas o que sei é que o código-fonte está na forma de uma árvore, cada comando levando um número específico de argumentos à sua direita. A árvore do programa divisor que escrevi se parece com isso:
Q
é a entrada.f
recebe dois argumentos,F
eA
, e retorna os itensT
emA
queF(T)
retorna um valor truthy. Nesse caso,F
é uma função que retorna o NOT lógico deQ%T
eA
éSQ
, que cria o intervalo[1...Q]
. Isso tem o efeito de filtrar apenas os números inteirosT
em[1...Q]
ondeQ%T == 0
.Para evitar a análise do restante do código, a coisa toda é agrupada em uma sequência de caracteres e, em seguida,
|Q"...
retorna o OR lógicoQ
e a sequência de caracteres. ComoQ
sempre é positivo, é sempre verdade e, portanto, sempre é retornado do OR lógico.Trabalhe em direção ao Brain-Flak
fonte
Resposta 16, GolfScript, 15
Experimente online!
Eu adicionei
~:),(;{\%!},p#
, usando newline como um nome de variável para ajustar a restrição de tamanho, e agrupei o programa inteiro de volta em uma linha para comentar. Essa era a distância 14. Então, eu adicionei{
antes}printdiv
para o Brain-Flak.Trabalhe em direção ao Brain-Flak
fonte
Resposta 17, CJam , 15
Experimente online!
Trabalhe em direção ao Brain-Flak (falta 30)
fonte
)({}(((
a()({})((
ao custo de apenas dois, este não é o programa exato que tínhamos em mente, mas()
e({})
são ambos não-ops neste contexto.Resposta 4 - Geléia , 4
Experimente online!
Código relevante:
A
)
atua como uma pausa entre as ligações, tanto quanto o analisador está em causa (eu acredito).O interno seria
ÆD
, em vez disso, isso cria um intervalo da1
entrada comR
, verifica a divisibilidade pela entrada com eḍ⁸
, em seguida, retorna uma lista dos verdadeiros índices baseados emT
.fonte
Resposta 9, Espaço em branco, 15
Onde
<SPACES>
é substituído pela seguinte cadeia, ondeT
é 0x09,L
é 0x0A eS
é 0x20:Nova linha literal adicionada para maior clareza. Observe que as regras especificam apenas caracteres que não são de espaço em branco. Não, não pude evitar.
Trabalhe em direção ao Brain-Flak
Não tenho ideia do que estava acontecendo antes, então agora temos:
fonte
Resposta 18, FSM , 15
(Isso recebe entrada e saída via código de caractere)
Explicação
O FSM é essencialmente um cérebro, exceto que usa espaço em branco em vez do conjunto usual de operadores do cérebro. Aqui está o código descompilado em brainfuck:
Progresso em direção ao Brain-Flak
Como o FSM é apenas espaço em branco, pude adicionar mais 15 caracteres ao código Brain-Flak. Isso nos coloca a 15 minutos da resposta, então fique à vontade para publicá-la.
Como não vou postar a resposta do Brain-flak, pensei em agradecer a todos que ajudaram a contribuir para esse objetivo:
Riley, 16 bytes
LegionMammal, 15 bytes
ETHproductions, 11 bytes
Lynn, 1 byte
Os seguintes usuários não foram capazes de contribuir com bytes diretamente, mas ajudaram de outras maneiras:
Obrigado a todos por tornar isso possível!
fonte
Resposta 19, 2sable , 15
Experimente online!
Eu removi o espaço em branco extra, envolvi tudo o que existia antes em uma string e, em seguida:
fonte
Resposta 21, Cubix , 15
Finalmente consegui encaixar isso :) Felizmente, foi depois que a resposta Brain-Flak foi feita, porque eu acho que teria dificultado. Precisava dos 15 completos para implementar.
Isso mapeia para o seguinte cubo
Você pode experimentá-lo aqui , mas precisará colá-lo. Suspeito que algumas das promoções estejam causando problemas para o link permanente.
O código é essencialmente mais de 2 linhas. As partes importantes são:
I s )
Isso recebe a entrada, troca a parte superior da pilha (0 também teria funcionado) e incrementos% ?
Obtenha o mod e teste. Se 0 continuar em frente ou descer para o redirecionamento; O N o
Solte os resultados do mod e produza o número seguido por uma nova linhau
U vire para a linha abaixo Aseguir está em ordem executada
; - ! @
Remova os 10 da pilha, subtraia o número da entrada, teste e encerre se zero< ; u
Redirecione o alvo para o primeiro teste. Remova a parte superior da pilha (resultado de modificação ou subtração) e volte a girar para aumentarfonte
Resposta 6, Python 1.6, 15
Tirei os
%
símbolos e comentei a primeira linha e um pouco da última linha. Só isso me custou 10 dos meus 15 pontos. No entanto, eu ainda não havia terminado; desde Python 1 não tem+=
eu tive que substituiri+=1
comi=i+1
me custando um extra de 3 pontos. Desde que eu tinha 2 sobrando, eu também adicionei((
ao começo. Estou planejando fazer uma submissão no Brain-Flak mais tarde e preciso de parênteses.fonte
Resposta 10, Ohm , distância 5
... onde
<SPACES>
é substituído por aquela corda monstruosa do espaço em branco resposta .Uma resposta um pouco atrevida, já que todo o resto é apenas um fio que não é executado.
fonte
Resposta 12, sério , 15
Experimente online!
A única diferença em relação à verdade resposta é que usa Sério backticks para marcar uma função onde realmente usa
⌠
e⌡
e nós apenas fazer os caracteres extras em uma corda, em seguida, pop e descartá-lo.Trabalhe em direção ao Brain-Flak
fonte
Resposta 14, Del | m | t , 15
Experimente online!
Explicação
Estou realmente começando a abusar do fato de que espaço em branco não é considerado a diferença aqui. Del | m | t realmente não se importa tanto com os caracteres que você, então a grande maioria do código é uma sequência de espaços e retornos de carro no início do programa. As partes visíveis reais do código não são executadas.
Aqui está o código transcrito de uma maneira mais "razoável":
Experimente online!
Como funciona no nível baixo
Para começar, temos
O R ^ V
isso serve para receber entrada no primeiro loop e funciona como não operacional todas as outras vezes.Em seguida, usamos
O
para fazer uma cópia da entrada para mais tarde.@ A K T
chama a variável armazenada na posição de memória -1 (no início do programa é 0) e aA J
incrementa.O @ A K U
Armazena o valor agora incrementado de volta na posição de memória -1 para nosso próximo loop.N
calcula o mod da cópia da entrada que fizemos um tempo atrás e o valor recuperado da memória e oR
nega.Juntos,
N R
crie um booleano que indique se a nossa entrada é ou não divisível pelos Termos de Serviço.Armazenamos uma cópia desse booleano no espaço de memória -2 usando
O @ B K U
e recuperamos o valor do espaço de memória -2 usando@ A K T
.Trocamos os dois principais elementos
Q
para garantir que o booleano esteja no topo e produzimos o valor se o booleano for verdadeiro usando^ X
.Se o booleano for falso, temos um valor extra que precisa ser erradicado; assim, lembramos do booleano armazenado no espaço -2
@ B K T
e exibimos um valor se for falsoR ^ P
.Duplicamos o valor de entrada com
O
e subtraímos o valor na memória -1 com@ A K T K
. Se for zero, sairemosR ^ _
.Por fim, temos
@ ^
isso pular qualquer que seja o próximo valor. Precisamos disso porque há um monte de lixo (na verdade, apenas um@
símbolo) gerado pela parte visível do código.Quando chega ao fim, volta ao início.
Como funciona em alto nível
A idéia básica é que temos um valor armazenado principalmente no local da memória -1, que é incrementado cada vez que fazemos um loop. Se esse valor divide nossa entrada, nós a produzimos e quando os dois são iguais, encerramos a execução.
Progresso em direção à inflamação cerebral
Como o espaço em branco não conta para a diferença, pude alterar o código sem gastar nenhum dos meus 15 pontos e, portanto, todos eles foram investidos no código Brain-Flak.
Aqui está a nossa posição atual.
fonte
Resposta 15, Befunge-98, 15
Experimente Online!
(Provavelmente há muito espaço em branco desnecessário, mas não posso me preocupar em jogar agora)
Eu usei todos os 15 para o programa Befunge, portanto, nenhuma alteração no Brain-flak desta vez.
Minha principal estratégia para isso foi enviar o IP na vertical e usar espaço em branco para executar certos caracteres do código preexistente.
Explicação:
O código que importa para o programa Befunge é este:
O que equivale a:
fonte
Resposta 2 - Python 3 , 5
Experimente online!
fonte
async
ou internosawait
? Isso contaria como um idioma completamente diferente?Resposta 5 - SOGL 0.8.2 , 9
Explicação:
Nota: atualmente o intérprete precisa
\n
ser substituído por s¶
para não contá-lo como entrada, mas o próprio analisador considera os dois intercambiáveis.fonte
Resposta 11, Na verdade , 15
Experimente online!
Explicação
Na verdade, possui um bom recurso
÷
para encontrar os fatores de um número, no entanto, não podemos usar esses recursos.Começo armazenando a entrada nos registros, para que não seja prejudicada pelo que está por vir. Eu faço isso usando
╩
mas poderia ter usado com a mesma facilidade um dos outros comandos disponíveis.Depois colo o código que já tínhamos (removi todo o espaço em branco porque era chato trabalhar com isso, posso fazer isso porque "o espaço em branco não conta"). Felizmente, isso não faz muito nada quando a pilha está vazia.
Então nós temos o resto do programa
Trabalhe em direção ao Brain-Flak
Todo esse trabalho e eu só consegui obter um parêntese extra.
fonte
[]
incluirmos o código Brain-Flak , poderemos ter o código Brainfcuk após ele. Pode abrir possibilidades.23, Clássico Brain-Flak, 13
Originalmente, @Wheat Wizard havia postado o código clássico do brain-flak como estava na resposta 22:
Isso tem 17 caracteres desativados. No entanto, consegui comprimir isso simplesmente movendo o
{})
código mais à direita no código proposto para obterQue tem apenas 13 caracteres! Então, tudo o que fiz foi adicionar / remover colchetes para obter o código proposto.
O código original que eu publiquei tinha um erro de digitação, está corrigido agora. ( Obrigado @WheatWizard! )
fonte
Resposta 1 - Python 2.7
Distância: NA - Primeira resposta
Experimente online!
fonte
22, Lenguage , 15
Lenguage é um esolang que se preocupa apenas com o tempo que o programa não trata do seu conteúdo. Assim, podemos criar qualquer programa de idiomas que desejar, preenchendo o último programa com a quantidade adequada de espaço em branco. O Lenguage é compilado no brainfuck, então vamos reutilizar o programa brainfuck que escrevi há algum tempo
Fiz algumas alterações no programa principal para facilitar as respostas posteriores, mas o resultado final se parece com:
onde
<SPACES>
representa 55501429195173976989402130752788553046280971902194531020486729504671367937656404963353269263683332162717880399306 caracteres de espaço.Estou abusando do espaço em branco não conta regra? Possivelmente.
Trabalhe para o Brain-Flak Classic
Já tínhamos todos esses parênteses lá, então pensei em começar o caminho em direção ao Brain-Flak Classic.
fonte