Hoje, enquanto escrevo isso, é 31 de março. Nos EUA, é isso 3/31
. Eu estava brincando com 331
um número para chegar a um desafio e descobri que seus resíduos (módulos pequenos) são palindrômicos. 331%2=1, 331%3=1, 331%4=3, 331%5=1, 331%6=1
( 11311
)
Seu desafio aqui é que, quando dado um número inteiro n > 2
, produz os primeiros n
números positivos que possuem resíduo palíndrico quando tomados módulo [2,n]
.
Por exemplo, para entrada 7
, a saída deve ser 1, 42, 43, 140, 182, 420, 421
. Aqui está o gráfico explicando por que esse é o caso:
mod
num | 2 3 4 5 6 7
-----------------
1 | 1 1 1 1 1 1
42 | 0 0 2 2 0 0
43 | 1 1 3 3 1 1
140 | 0 2 0 0 2 0
182 | 0 2 2 2 2 0
420 | 0 0 0 0 0 0
421 | 1 1 1 1 1 1
Entrada
Um número inteiro positivo único n
com n > 2
em qualquer formato conveniente .
Saída
A matriz / lista resultante dos primeiros n
resíduos palíndricos, conforme descrito acima. Mais uma vez, em qualquer formato adequado.
Regras
- Para
n > 10
, suponha que a lista de resíduos seja achatada antes de verificar se é um palíndromo. Ou seja,[1, 10, 11]
é palindrômico, mas[1, 10, 1]
não é. - Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- Se possível, inclua um link para um ambiente de teste on-line para que outras pessoas possam experimentar seu código!
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
Exemplos
[input]
[output]
3
[1, 6, 7]
4
[1, 4, 5, 8]
5
[1, 50, 60, 61, 110]
6
[1, 30, 31, 60, 61, 90]
7
[1, 42, 43, 140, 182, 420, 421]
8
[1, 168, 169, 336, 337, 504, 505, 672]
9
[1, 2520, 2521, 5040, 5041, 7560, 7561, 10080, 10081]
10
[1, 280, 281, 560, 1611, 1890, 1891, 2170, 2171, 2241]
11
[1, 22682, 27720, 27721, 50402, 55440, 55441, 78122, 83160, 83161, 105842]
code-golf
math
number-theory
palindrome
AdmBorkBork
fonte
fonte
n
elementos.[1, 10, 11]
é palindrômico, mas[1, 10, 1]
não é" parece tão matematicamente errado.Respostas:
Haskell, 57 bytes
Exemplo de uso:
f 4
->[1,4,5,8]
. Experimente online!O primeiro
=<<
está no contexto da função e se traduz no lambda\x -> reverse x == x
e o segundo=<<
no contexto da lista e equivalente aconcatMap
, ou seja, mapear e achatar um nível de lista.fonte
05AB1E , 12 bytes
Experimente online!
Explicação
fonte
Mathematica, 79 bytes
fonte
JavaScript (ES6), 104 bytes
Demo
Nota : devido às inúmeras chamadas recursivas, isso trava para n> 8 no Firefox ou n> 10 no Chrome.
Mostrar snippet de código
fonte
Python 2,
9897 bytesExperimente Online!
fonte
12
devido à regra estranho que[1, 10, 11]
é considerado um palíndromoMATL , 19 bytes
Agradecemos a @AdmBorkBork por apontar um erro em uma versão anterior do código, agora corrigida
Experimente online!
Explicação
fonte
Scala,
908682 bytesExplicação
Casos de teste
Resultados
Edições
# 1 (90 => 86)
# 2 (86 => 82)
(2 to n).map(%i)
=>(2 to n)map(%i)
fonte
def f(n:Int)=
para(n:Int)=>
, uma vez que também define uma função (mas sem nome). Economiza 4 bytes!Gelatina , 12 bytes
Quão?
Experimente online!
fonte
CJam , 28 bytes
Experimente online!
Explicação
fonte
PHP, 93 bytes
Loops da Versão Online 2 Saída como String
Expandido
PHP 130 bytes
Loops da versão 2 online
Expandido
PHP, 139 bytes com 1 loop
Loop on-line da versão 1
Correr com
Expandido
fonte
QBIC , 48 bytes
Bate o Mathematica! Exemplo de execução:
Explicação:
fonte
Japonês , 26 bytes
Experimente online! Leva alguns segundos em todos entradas, então seja paciente, por favor.
Isso seria consideravelmente mais curto (e mais rápido) se houvesse um built-in para obter os primeiros N números que satisfizessem alguma condição:
fonte