Die drei Zeilen der QWERTZ - Tastatur sind qwertyuiop
, asdfghjkl
und zxcvbnm
. Ihre Aufgabe ist es, aus einer vorgegebenen Wortliste das längste Wort zu finden, das mit nur einer Zeile der Tastatur eingegeben werden kann.
Probeneingabe 1
artist
home
gas
writer
geology
marine
twerp
Ausgabe
writer
(Von den gegebenen Worten nur gas
, writer
und twerp
kann mit einer einzigen Zeile geschrieben werden, und writer
ist die am längsten)
Die Wörter sind möglicherweise keine echten Wörter (nehmen Sie also nicht an, dass die dritte Zeile ungültig ist). Sie können jedoch davon ausgehen, dass es immer genau eine Antwort geben wird (nicht mehr und nicht weniger).
Probeneingabe 2
wrhuji
bxnzmmx
gllwssjjd
vnccbb
lrkjhgfdsa
tttttt
Ausgabe
bxnzmmx
Zusätzliche Interpunktions- und Leerzeichen können in der Eingabe angegeben werden (je nach Sprachanforderungen). Es sollte jedoch keine zusätzliche Ausgabe erfolgen. Eingabe und Ausgabe erfolgen in Kleinbuchstaben. Kürzester Code gewinnt.
Antworten:
Python 2, 84 Bytes
Findet die
max
Eingaben, vergleicht sie mit weniger überspannten Tastaturzeilen und wird dann länger. Die Tastatur Zeilenwert wird extrahiert durch"asdfghjklzxcvbnm".find(c)/9
, die die mittlere Reihe nimmt0
, die untere Zeile1
, und die obere Reihe, die ausgeschlossen ist, an-1
, dafind
gibt-1
Werte für vermisste.Andere Versuche:
quelle
/
Zeichen mehr für Python 3;)9
undfor
E
oder iste
, können Sie so ziemlich immer Leerzeichen zwischen einer Zahl und einem Variablennamen / Schlüsselwort4if 0else 2
ist gültig in 2.7.11 und 3.5.1 (und war wahrscheinlich für einigeJapt,
3230 BytesOnline testen! Die Eingabe ist ein Array von Zeichenfolgen.
Wie es funktioniert
quelle
"QWERTYUIOP\nASDFGHJKL\nZXCVBNM"
vordefiniertes Literal? Gut gespielt :-)D
QWERTYUIOP\nASDFGHJKL\nZXCVBNM
Variables <...> D 13
;
am Anfang des Programms setzt VariablenA-L
auf verschiedene Werte zurück.D
ist auf die Tastaturzeichenfolge eingestellt. Weitere Infos finden Sie hier .Python 2.5+ und 3, 93 Bytes
Musste testen, wie viele Schläge für diesen Ansatz; Dies nutzt die Tatsache, dass
a.strip(b)
eine leere Zeichenfolge entsteht, wenn siea
nur aus Zeichen besteht, die in b vorkommen.Die Funktion nimmt eine Liste von Zeichenfolgen und gibt eine Zeichenfolge zurück.
quelle
key
Variable dort? Ich denke, Sie können es entfernen.key
Argument dermax
Funktion ist nur ein Schlüsselwort.Netzhaut , 73 Bytes
Probieren Sie es online!
Fazit: Retina braucht eine Sortierstufe.
Erläuterung
Dies ist eine Grep-Phase: Sie behält nur Zeilen bei, die vom regulären Ausdruck abgeglichen werden. Dh diejenigen, die ausschließlich aus einer dieser Charakterklassen gebildet werden.
Jetzt müssen wir nur noch die größte der verbleibenden Saiten finden. Wir tun dies, indem wir alle Wörter abgleichen, die mindestens so lang sind wie alle Wörter nach ihnen. Das
1
ist eine neue Ergänzung zu Retina (vor zwei Tagen veröffentlicht), die dieses Spiel Stufe begrenzt nur die erste solche Übereinstimmung zu berücksichtigen. Und!
weist Retina an, das Match auszudrucken (anstatt es zu zählen).quelle
(?<a-b>...)
Syntax verwenden, die beim Codegolf selten benötigt wird.o-r
, super.Java,
154142 oder142130 BytesWeil, weißt du, Java.
C # zum Vergleich .
146 Bytes, wenn die Eingabe eine einzelne Zeichenfolge sein muss, deren Werte durch Folgendes getrennt sind
\n
:134 Bytes, wenn ich stattdessen die Eingabe als String [] annehmen kann:
Leicht ungolfed:
Das zweite Lambda ist a
Function<String[],String>
.quelle
l->l.stream().filter(g->g.matches("[wertyuio-r]*|[asdfghjkl]*|[zxcvbnm]*")).max((a,b)->a.length()-b.length()).get()
(116 Zeichen)import java.util.*;
in die , was bedeutet, dass das Aufnehmen einer Liste -16 Bytes umfasst, indem Sie eine Liste aber +19 verwenden, um die Liste zu importieren. Sie haben dort jedochmax
stattreduce
für einen Gewinn von -7 Bytes abgefangen.Jelly,
4034 BytesProbieren Sie es online!
Wie es funktioniert
quelle
Python 3, 98
5 Bytes gespart dank Kevin.
3 Bytes gespart dank PM 2Ring.
3 Bytes dank Antti Haapala gespeichert.
Im Moment brachial. Ich filtere die Wörter nur nach den Wörtern, die in einer einzelnen Zeile enthalten sind, und sortiere sie dann nach der maximalen Zeichenfolgenlänge.
Testfälle:
quelle
PowerShell v2 +, 72 Byte
Übernimmt die Eingabe über Befehlszeilenargumente als
$args
und verwendet dann den-match
Operator mit einem regulären Ausdruck, um nur die Wörter auszuwählen, die ausschließlich aus einer Tastaturzeile bestehen. Wir leiten diese Ergebnisse anSort-Object
die Art der Immobilie weiterLength
. Dies ist möglich, da alle Zeichenfolgen in PowerShell vomSystem.String
Typ sind, einschließlich.Length
als sortierbare Eigenschaft enthalten ist. Dadurch werden die Zeichenfolgen in aufsteigender Reihenfolge nach Länge sortiert. Wir nehmen die letzte Zeichenfolge mit[-1]
, belassen sie in der Pipeline und geben sie implizit aus.Beispiel
quelle
Pyth,
4535 BytesVielen Dank an @FryAmThe Eggman, dass du mir ein paar Bytes erspart hast!
Probieren Sie es hier aus!
Nimmt die Eingabe als eine Liste von Wörtern.
Erläuterung
quelle
Ruby,
888269Wenn ich keine Liste von Zeichenfolgen nehmen darf und eine mehrzeilige Zeichenfolge nehmen muss, addiere +12 zur Punktzahl und füge
.split('\n')
direkt vor dem.grep
Aufruf hinzu.Vielen Dank an CatsAreFluffy, dass er mich über Stabby Lambdas in Ruby und weitere Optimierungen durch Manatwork unterrichtet hat
quelle
.split('\n')
vor dem hinzu.select
, oder? Und warum keine Lambdas?.select
des Codeblocks zu tun ist , ist, ihn mit einem regulären Ausdruck abzugleichen,.grep
ist dies geeigneter. Es ist nicht erforderlich, die Parameter der letzten Methode in einer Aufrufkette in Klammern zu setzen..length
hat einen kürzeren Alias.size
:->x{x.grep(/^([o-rwetyui]+|[asdfghjkl]+|[zxcvbnm]+)$/).max_by &:size}
C #, 141/112 / (120 Bytes)
Anwärter auf die schlechteste Golfsprache, aus offensichtlichen Gründen. Verwendet "mein" Gebietsschema mit QWERTZ anstelle von QWERTY, funktioniert aber ansonsten einwandfrei.
Volles Programm ohne wo:
Nur ohne Where ausgeben:
Nur Ausgabe (Original):
quelle
bash
105 BytesUnd natürlich verschiedene andere Dienstprogramme.
quelle
awk
Code kann kürzer als geschrieben werden$0=length"\t"$0
.awk,
928481 bytes3 Bytes gespart dank @Wolfgang Vorschlag
quelle
[wetyuio-r]
stattdessen verwenden, und zwei weitere, indem Sie/^(expr|expr|expr)$/
anstelle von `/ ^ expr $ | ^ expr $ | ^ expr $ /gawk
undmawk
sind glücklich ohne sie.MATL , 54 Bytes
Dies funktioniert mit der aktuellen Version (14.0.0) der Sprache / des Compilers.
Eingabeformat ist (erstes Beispiel)
oder (zweites Beispiel)
Probieren Sie es online!
Erläuterung
quelle
Perl, 81 Bytes
$a=$1 if/^([wetyuio-r]+|[asdfghjkl]+|[zxcvbnm]+)$/&&1<<y///c>$a=~y///c;END{say$a}
Das Symbol für die Buchstabenanzahl ist ziemlich hoch.
quelle
Groovy, 65 Zeichen
Probelauf:
Beachten Sie, dass der reguläre Ausdruck, der von verwendet wird,
.grep()
keine Verankerung erfordert, sodass auch die Gruppierung entfällt:quelle