$_-$r||(all{$r%$_**2}2..$_)&&say while$r=reverse++$_
Если это была проблема с решением (54 байта):
-MList::Util=all
f = (n, i) => // f is a recursive function taking an index n
g(i += k = '') || // set k to a zero'ish empty string,
// coerce i to a string
// and invoke g with d = i
n-- ? // if the above call was truthy or n is not equal to 0:
f(n, -~i) // do a recursive call with i + 1
: // else:
i // success: return i
||answer||g = d => // g is a recursive function taking a counter d
i[d] && // if i[d] is defined
i[d] - i[k++] ? // and it's not equal to i[k] (increment k afterwards):
1 // i is not palindromic: force a truthy result
: // else:
i % d-- ** 2 ? // if d² is not a divisor of i (decrement d afterwards):
g(d) // do a recursive call
: // else:
d // return d (0 if i is squarefree)
Генерирует последовательность
f=(n,i)=>(g=d=>i[d]&&i[d]-i[k++]?1:i%d--**2?g(d):d)(i+=k='')||n--?f(n,-~i):i
∞ # push the list of natural numbers [1, 2, ...]
ʒ # keep the values for which the following is 1:
 # push the number and its reverse
Q # are both equal?
y # push the number again
Ó # push the exponents of the prime factorisation
à # take the maximum
* # multiply both numbers
||answer||∞ʒÂQyÓà*
1ÆfQƑ׌ḂƲ# - Main link. Takes no arguments
Ʋ - Group the previous 4 links into a monad f(k):
Æf - Prime factorisation of k (with repeats)
Ƒ - Is this invariant under:
Q - Deduplication
ŒḂ - Is k a palindrome?
× - Both conditions are true?
1 # - Read an integer n from STDIN. Count up k = 1, 2, 3, ...
until n such k return true under f(k). Return those k
Возвращает первый n
squarefree palindromes
1ÆfQƑ׌ḂƲ#
||answer||Печатает бесконечную последовательность.
Do[If[SquareFreeQ@n&&PalindromeQ@n,Print@n],{n,∞}]
Прокомментировал:
ḋ≠&↔? (the input's)
ḋ prime decomposition
≠ has only unique elements
& and the input
↔ reversed
? is the input
(and also the output)
||answer||Возвращает n-й термин с индексом 1.
ḋ≠&↔?
Вспомогательная функция г одновременно проверяет, я является палиндромным и бесквадратным. Переменная д используется как счетчик для проверки делителей и как индекс убывающей цифры. Переменная к используется как возрастающий цифровой индекс. Оба я и к определены в обертке.
foS=upİ↔
Основная функция декрементирует н в любое время г возвращает 0 и останавливается, когда п = 0.
`n`[::-1]==`n` # If n is a palindrome. `n` is repr(n).
# We check that it's the same
# backwards and forwards.
* # Multiplplying 2 booleans is AND
all(n%i**2for i in range(2,n)) # Check that squares of all #'s < n do not divide n
||answer||lambda n:`n`[::-1]==`n`*all(n%i**2for i in range(2,n))
, 52 bytesn=0
while 1:
n+=1
if`n`[::-1]==`n`*all(n%i**2for i in range(2,n)):print n