Biorąc pod uwagę nieujemną liczbę całkowitą lub listę cyfr, określ, na ile sposobów można utworzyć liczbę, łącząc liczby kwadratowe, które mogą mieć zera wiodące.
Przykłady
input -> output # explanation
164 -> 2 # [16, 4], [1, 64]
101 -> 2 # [1, 01], [1, 0, 1]
100 -> 3 # [100], [1, 00], [1, 0, 0]
1 -> 1 # [1]
0 -> 1 # [0]
164900 -> 9 # [1, 64, 9, 0, 0], [1, 64, 9, 00], [1, 64, 900], [16, 4, 900], [16, 4, 9, 0, 0], [16, 4, 9, 00], [16, 49, 0, 0], [16, 49, 00], [16, 4900]
Zasady
- Obowiązują standardowe luki
- To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w bajtach
code-golf
math
number
combinatorics
set-partitions
HyperNeutrino
źródło
źródło
Odpowiedzi:
Haskell , 135 bajtów
Wypróbuj online!
Prawdopodobnie jeszcze nie dobrze grał w golfa, ale jest to zaskakująco trudny problem
źródło
Galaretka , 8 bajtów
Monadyczny link pobierający listę cyfr i zwracający nieujemną liczbę całkowitą.
Wypróbuj online! lub zobacz pakiet testowy .
W jaki sposób?
źródło
Haskell , 88 bajtów
Definiuje funkcję,
f
która pobiera ciąg i zwraca liczbę zmiennoprzecinkową. Bardzo wolno. Wypróbuj online!Wyjaśnienie
Używam mojej wskazówki Haskell do obliczania wszystkich partycji ciągu za pomocą
mapM
iwords
. Fragment kodumapM(\c->[[c],c:" "])x
zastępuje każdy znak'c'
ciągu łańcuchemx
jednoelementowym"c"
lub dwuelementowym"c "
i zwraca listę wszystkich możliwych kombinacji. Jeśli wezmę jeden z wyników,y
połącz go i wywołamwords
, zostanie on podzielony na wstawione spacjemapM
. W ten sposób uzyskuję wszystkie partycjex
ciągłych podciągów. Następnie liczę te wyniki, w których każdy element partycji jest kwadratem idealnym (znajdując go na liście[0,1,4,9,..,x^2]
). Zastrzeżeniem jest to, że każda partycja jest liczona dwukrotnie, z końcem spacji i bez, więc biorę sumę0.5
s zamiast1
s; właśnie dlatego typ wyniku jest liczbą zmiennoprzecinkową.źródło
Pyth , 16 bajtów
Zestaw testowy .
źródło
Python 3 ,
148139135134 bajtów10 bajtów dzięki Arnoldowi Palmerowi.
Wypróbuj online!
źródło
%1
ifor
...[[a[0]]]
go[a[:1]]
uratuje bajtMathematica, 141 bajtów
wejście (lista cyfr)
źródło
{1,64,9}
,{16,4,9}
i{16,49}
), ale przywracany funkcyjne 4.Table[(function of s[[i]]),{i,Length[s=(stuff)]}]
kilka razy używasz konstrukcji ; zazwyczaj możesz to zagrać w golfa(function of #)&/@(stuff)
.Python 2 ,
173163 bajtyWypróbuj online!
Edycja: Zapisano 10 bajtów dzięki ArnoldPalmer
źródło
.5
zamiast0.5
?