Nehmen Sie zwei Eingänge, einen nicht leeren Vektor / Liste mit Ziffern 1
und 2
und eine Zeichenfolge (nein, Sie können nicht nehmen 0/1
statt). Die Zeichenfolge ist eine der folgenden (in Kleinbuchstaben, genau wie unten beschrieben:
increasing
decreasing
ones
twos
all
none
Wenn die Zeichenfolge ____ ist, geben Sie die Indizes ___ zurück:
increasing
... wo sich die Liste von1
nach ändert2
(jede2
, die direkt nach a folgt1
)decreasing
... wo sich die Liste von2
nach ändert1
(jede1
, die direkt nach a folgt2
)ones
... von allen Ziffern, die sind1
twos
... von allen Ziffern, die sind2
all
... alle Ziffernnone
... keine der Ziffern.0
ist in Ordnung, wenn die Liste 1-indiziert ist. Eine negative Zahl ist in Ordnung, wenn die Liste 0-indiziert ist. Sie können auch eine leere Liste oder Zeichenfolge ausgeben.
Testfälle:
Diese sind 1-indiziert. Sie können wählen, ob Sie 1-indiziert oder 0-indiziert möchten. In den Testfällen werden die gleichen Vektoren für verschiedene Zeichenfolgen verwendet.
--------------------------------
Vector:
1 1 2 2 2 1 2 2 1 1 2
String - Output
increasing - 3, 7, 11
decreasing - 6, 9
ones - 1, 2, 6, 9, 10
twos - 3, 4, 5, 7, 8, 11
all - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
none - 0 / []
------------------------------------
Vector:
1
String:
ones - 1
all - 1
decreasing / increasing / twos / none - 0 / []
Wertung
Da dies Code-Golf ist , gewinnt die Antwort mit den wenigsten Bytes.
Antworten:
JavaScript (Firefox 30-57),
7473 ByteArray Comprehensions sind eine nette Art und Weise zu kombinieren
map
undfilter
in einem Rutsch. Bearbeiten: 1 Byte dank @ edc65 gespeichert.quelle
Python 2 ,
13613111910897 Byteslambda
Funktion.enumerate()
anstelle vonrange(len())
.0
-indexing (wie in TFelds Antwort ) und Golfing"adinot".find(m[0])
to verwendet wurdenord(m[0])/3-32
.Probieren Sie es online aus!
quelle
1
oder2
, können Sie ändern ,(l[j]>1)*(l[~-j]<2)
um(l[j]>l[~-j])
für 119 Bytes1
-indexed bleiben.enumerate()
Python 2 ,
117111110999792 BytesProbieren Sie es online aus!
0
-indexiertGeschaltet mit Jonathans Indizierung und golfed
ord(m[0])/3-32
zuord(t[0])/3%7
quelle
l[i]==2
aufl[i]>1
.Haskell ,
1128381 BytesProbieren Sie es online aus! Anwendungsbeispiel :
"increasing"%[1,1,2,1,2]
. Die Ergebnisse sind 1-indiziert.Teilweise inspiriert von Lynns Haskell-Antwort .
quelle
MATL ,
32313029 BytesDie Ausgabe ist 1-basiert oder leer.
Probieren Sie es online aus!
Erläuterung
Der Code berechnet die sechs möglichen Ausgaben für die Array-Eingabe und wählt dann abhängig von der Zeichenfolgeneingabe die entsprechende Ausgabe aus.
Zur Auswahl der Ausgabe werden die ASCII-Codepunkte aller Zeichen der Zeichenfolgeneingabe hinzugefügt. Das Ergebnis Modulo 9 gibt
6
,1
,5
,2
,7
,0
jeweils für'increasing'
,'decreasing'
,'ones'
,'twos'
,'all'
,'none'
. Da alle resultierenden Zahlen unterschiedlich sind, kann dies als Auswahlkriterium verwendet werden.Anstatt tatsächlich eine Modulo 9-Operation für die Summe durchzuführen, wird die Liste der möglichen Eingaben auf 9 Einträge erweitert (von denen einige Dummy-Einträge sind), sodass die Indizierung in diese Liste automatisch in Modulo 9 erfolgt.
quelle
Python 2 , 92 Bytes
Probieren Sie es online aus!
quelle
Gelee , 27 Bytes
Probieren Sie es online aus!
-3 danke an Jonathan Allan .
quelle
0
sei der unterste Link, aber anscheinend ist esÇ
aber seltsamer, danke! (auch ich habe gerade ein neues Wort gelernt: p)Schale , 27 Bytes
Probieren Sie es online aus!
-9 danke an H.PWiz .
Ich bin ziemlich stolz auf diese Antwort.
quelle
ΘẊ>
undΘẊ<
und`fN
0
ist das letzte Element.¨₆Żσa¨
stattdessen sein würde, deshalb habe ich diese Funktion nicht verwendet, danke. Und jetzt kann ich sagen, dass es Jelly bindet .Java (OpenJDK 8) ,
266217213205172171155131 BytesProbieren Sie es online aus!
quelle
y
alschar
, können Sie Golf Gleichheitstests gerney.equals("a")
zuy=='a'
,y==97
oder sogary<98
.19
isc
's höchster Wert ist,c==19
ist gleichc>18
.s->a->{int i=0,l=0,c=s.charAt(0)-97;for(int e:a){if(++i>1&(c==8&e>l|c==3&e<l)|c==14&(l=e)<2|c>18&l>1|c<1)System.out.print(i+",");}}
Jq 1,5 , 131 Bytes
Basierend auf dem Ansatz von xcali , da der String-Abgleich kürzer ist als meine Array-Version.
Angenommen, jq wird mit
-Rs
Optionen aufgerufen und die Eingabe wird in zwei Zeilen angezeigt, zErweitert:
Probieren Sie es online aus!
quelle
Haskell , 91 Bytes
Probieren Sie es online aus!
Laikoni hat ein Byte gespeichert.
quelle
(i,y,x)<-zip3[1..]l$l!!0:l
.J, 73 Bytes
Wäre neugierig zu sehen, wie dies erheblich verdichtet werden kann - ich glaube es kann (10 Zeichen nur für all diese Agenda Parens!)
g
- Hilfsverb zum Erhöhen und Verringern, was nur dem Vergleich der Werte von Infix-\
Läufen der Größe 2 gleichkommt@.
Probieren Sie es online aus!
quelle
1=]
und2=]
nicht arbeiten? Was wäre, wenng
eine Zahl als linkes Argument und eine Liste als rechtes Argument verwendet und die2-/\
auf die Liste angewendeten Indizes zurückgegeben würden , die dem linken Argument entsprechen? Auf diese Weise können Sie es weitergeben_1
oder1
abnehmen und erhöhen, anstatt ein Adverb zu verwenden.Java 8,
233229216 BytesDieser String-Ansatz endete länger als erwartet. Aber obwohl ich von der anderen Java 8-Antwort überfordert bin, habe ich mich trotzdem entschlossen, ihn zu veröffentlichen.
Es kann definitiv Golf gespielt werden, auch mit diesem Ansatz. Das "Keine" und "Erhöhen / Verringern" verursachte hauptsächlich eine Problemumgehung, die einige Bytes kostete.
Das Ergebnis ist 1-indiziert.
Erläuterung:
Probieren Sie es hier aus.
quelle
Perl 5 , 71 + 2 (
-nl
) = 73 BytesProbieren Sie es online aus!
Die überarbeitete Logik entspricht praktisch der folgenden Erklärung, die Musterübereinstimmungen wurden jedoch verkürzt.
Vorher:
Probieren Sie es online aus!
Gibt nichts aus, wenn die Kriterien nicht übereinstimmen.
Erklärt:
quelle