Zyklisch selbstbeschreibende Listen
Eine Liste positiver Ganzzahlen ist zyklisch selbstbeschreibend , wenn die folgenden Bedingungen erfüllt sind.
- ist nicht leer.
- Das erste und das letzte Element von sind unterschiedlich.
- Wenn Sie in Läufe mit gleichen Elementen aufteilen , entspricht das Element jedes Laufs der Länge des nächsten Laufs und das Element des letzten Laufs der Länge des ersten Laufs.
Betrachten Sie zum Beispiel . Es ist nicht leer und das erste und das letzte Element sind unterschiedlich. Wenn wir es in Läufe , erhalten wir .
- Der erste Lauf ist ein Lauf von s und die Länge des nächsten Laufs ist .
- Der zweite Lauf ist ein Lauf von s und die Länge des nächsten Laufs ist .
- Der dritte Lauf ist ein Lauf von s und die Länge des nächsten Laufs ist .
- Der vierte Lauf ist ein Lauf von s und die Länge des nächsten Laufs ist .
- Schließlich ist der letzte Lauf ein Lauf von s und die Länge des ersten Laufs ist .
Dies bedeutet, dass eine sich zyklisch selbst beschreibende Liste ist.
Für ein Nicht-Beispiel ist die Liste nicht zyklisch selbstbeschreibend, da auf einen Lauf von s ein Lauf der Länge folgt . Die Liste ist auch nicht zyklisch selbstbeschreibend, da der letzte Lauf s dauert, der erste jedoch die Länge .
Die Aufgabe
In dieser Herausforderung ist Ihre Eingabe eine Ganzzahl . Ihre Ausgabe soll die Anzahl der sich zyklisch selbst beschreibenden Listen sein, deren Summe gleich . Zum Beispiel sollte zu , da die zyklisch selbstbeschreibenden Listen, deren Summe ist, , , und . Die niedrigste Byteanzahl gewinnt, und es gelten andere Standardregeln für Code-Golf .
Hier sind die korrekten Ausgabewerte für Eingaben von bis :
1 -> 0
2 -> 0
3 -> 0
4 -> 2
5 -> 0
6 -> 2
7 -> 0
8 -> 4
9 -> 0
10 -> 6
11 -> 6
12 -> 12
13 -> 0
14 -> 22
15 -> 10
16 -> 32
17 -> 16
18 -> 56
19 -> 30
20 -> 96
21 -> 56
22 -> 158
23 -> 112
24 -> 282
25 -> 198
26 -> 464
27 -> 364
28 -> 814
29 -> 644
30 -> 1382
31 -> 1192
32 -> 2368
33 -> 2080
34 -> 4078
35 -> 3844
36 -> 7036
37 -> 6694
38 -> 12136
39 -> 12070
40 -> 20940
41 -> 21362
42 -> 36278
43 -> 37892
44 -> 62634
45 -> 67154
46 -> 108678
47 -> 118866
48 -> 188280
49 -> 209784
50 -> 326878
n,1,...,1
, und jede ungerade Zahl größer als 13 kann durch Verketten3,2,2,2,1,1
mit einer geraden Zahl erhalten werden. Der Beweis, dass 13 unmöglich ist, wird dem Leser als Übung überlassen.Antworten:
Haskell , 75 Bytes
Vielen Dank Ørjan für das Speichern eines Bytes!
Probieren Sie es online!
Das Problem ist äquivalent zu:
quelle
Jelly , 18 Bytes
Probieren Sie es online!
Idee: Jede zyklisch selbstbeschreibende Liste kann als Werteliste für jeden Block beschrieben werden, und wir können die Längen aus den Werten ableiten. Beachten Sie, dass zwei benachbarte Werte unterschiedlich sein müssen. Natürlich kann es höchstens
n
Blöcke geben und die Länge jedes Blocks ist höchstensn
.quelle
Haskell,
118105103 BytesEdit: -13 Bytes dank @ Ørjan Johansen, -2 Bytes dank @ H.PWiz
Probieren Sie es online!
quelle
(i#d)n
->i#d$n