Die Herausforderung
Wenn eine Eingabezeichenfolge (oder ein Array) aus <
und gegeben ist >
, geben Sie eine Folge (ein Array oder eine Zeichenfolge) von Ganzzahlen aus, so dass:
- Die Operatoren sind alle korrekt, wenn sie in der Reihenfolge zwischen aufeinanderfolgenden Nummern in der Ausgabe angewendet werden
- alle ganzen Zahlen sind positiv (1 oder größer)
- Die Summe der ganzen Zahlen ist so klein wie mathematisch möglich
Eingaben können variieren, um "größer als" und "kleiner als" in der von Ihnen gewählten Sprache zu entsprechen.
Als alternative Ausgabe geben Sie einfach die Summe der Zahlen in der Ausgabe an. Geben Sie an, welche Version Sie in Ihrem Antworttitel lösen.
Es gelten die üblichen Ausschlüsse und Regeln, kleinste Bytes gewinnen.
Sie können davon ausgehen, dass die Eingabezeichenfolge in Ihrer Sprache niemals zu einem Ganzzahlüberlauf führt, wenn dies hilfreich ist.
Beispiele
>
gibt2 1
welche Summen an3
>>>
gibt4 3 2 1
welche Summen an10
><
gibt2 1 2
welche Summen an5
gibt
1
welche Summen an1
>>>>>>>>>
gibt10 9 8 7 6 5 4 3 2 1
welche Summen an55
>><<>><>>>
gibt3 2 1 2 3 2 1 4 3 2 1
welche Summen an24
><>><>><>
gibt2 1 3 2 1 3 2 1 2 1
welche Summen an18
<<<<>
gibt1 2 3 4 5 1
welche Summen an16
<<<<><<>
gibt1 2 3 4 5 1 2 3 1
welche Summen an22
>><<
gibt3 2 1 2 3
welche Summen an11
code-golf
sequence
mathematics
simonalexander2005
quelle
quelle
>
und verwenden<
?><>
Antworten:
Jelly , 19 Bytes
Probieren Sie es online!
Der Wert jeder Zahl ist maximal ( Anzahl
>
unmittelbar rechts davon , Anzahl<
unmittelbar links davon) ) + 1 .Alternative...
Probieren Sie es online!
quelle
> <> ,
4038 BytesProbieren Sie es online!
Eine passende Sprache. Als Referenz
><>
ergibt sich 2,1,2,1.Wie es funktioniert:
quelle
Python 3, 93 Bytes
Probieren Sie es online!
Entschlüsselt:
quelle
Haskell , 119 Bytes
Probieren Sie es online!
Erläuterung
Die Idee dabei ist, dass wir entweder
>
s oder<
s ausführen, die jeweils auf aufsteigende und absteigende Bereiche abgebildet werden. Also benutzen wirgroup
teilen die Zeichenfolge in Gruppen von aufeinanderfolgenden Zeichen auf. Unsere Aufgabe ist es, diese dann in der richtigen Weise zusammenzufügen.Wenn wir haben
<>
, wollen wir die beiden Listen zusammenfügen, indem wir zum Beispiel den größeren Endwert nehmenist geteilt
auf Bereiche abgebildet
Wenn wir dann nähen, fallen wir,
3
weil es kleiner ist (3
nicht größer als7
).Wenn wir
><
das Gegenteil tun, lassen wir den größeren Wert fallen.Der eigentliche Code erreicht dies, indem er einen Operator erstellt
%
. Die Definition von%
ist recht komplex, liest aber im Grunde genommen von links nach rechts und verfolgt, wie viele aufeinanderfolgende Zeichen gleich sind. Es hat dazu im linken Bereich den Wert des Betreibers gehabt. Wenn wir eine Stelle erreichen, an der sich die Zeichen ändern, führen wir die von mir beschriebenen Stiche aus.quelle
(2%)
?%
with2
als erstes Argument.main
Implementierung hinzuzufügen ?Retina 0,8,2 , 36 Bytes
Probieren Sie es online! Link enthält Testfälle. Erläuterung:
Fügen Sie
1
s vor, zwischen und nach<
s und>
s ein.Erhöhen Sie die Ganzzahlen wiederholt, bis alle Vergleiche erfüllt sind.
Summieren Sie die Ganzzahlen und konvertieren Sie sie in Dezimalzahlen.
quelle
Java 10,
198181 BytesProbieren Sie es online aus.
Erläuterung:
quelle
Haskell , 87 Bytes
Probieren Sie es online!
Ein Port meiner Gelee-Antwort.
quelle
Stax , 21 Bytes
Führen Sie es aus und debuggen Sie es
Es funktioniert, indem die Eingabe mit einer Lauflänge codiert und die generierten Bereiche miteinander verkettet werden. Ausgepackt, ungolfed und kommentiert sieht es so aus.
Führen Sie dieses aus
quelle
Perl 5
-p
, 53 BytesProbieren Sie es online!
quelle
Rot , 185 Bytes
Nach der Erklärung von user202729 ...
Probieren Sie es online!
quelle