Les trois rangées du clavier qwerty sont qwertyuiop
, asdfghjkl
et zxcvbnm
. Votre tâche consiste à trouver le mot le plus long pouvant être saisi à l'aide d'une seule ligne du clavier, à partir d'une liste de mots donnée.
Exemple d'entrée 1
artist
home
gas
writer
geology
marine
twerp
Sortie
writer
(Des mots donnés, seulement gas
, writer
et twerp
peuvent être écrits en utilisant une seule ligne, et writer
est le plus long)
Les mots peuvent ne pas être des mots réels (donc ne présumez pas que la troisième ligne n'est pas valide). Cependant, vous pouvez supposer qu'il y aura toujours exactement une réponse (ni plus, ni moins).
Exemple d'entrée 2
wrhuji
bxnzmmx
gllwssjjd
vnccbb
lrkjhgfdsa
tttttt
Sortie
bxnzmmx
Des signes de ponctuation et des espaces supplémentaires peuvent être fournis en entrée (selon les exigences linguistiques). Cependant, aucune sortie supplémentaire ne doit être donnée. L'entrée et la sortie sont en minuscules. Le code le plus court gagne.
Réponses:
Python 2, 84 octets
Recherche l'
max
entrée de, en comparant par moins de lignes de clavier étendues, puis en augmentant la longueur. La valeur de la ligne du clavier est extraite par"asdfghjklzxcvbnm".find(c)/9
, ce qui prend la ligne du milieu à0
, la ligne du bas à1
et la ligne du haut, qui est exclue, à-1
, carfind
donne-1
les valeurs manquantes.Autres tentatives:
la source
/
personnage de plus pour Python 3;)9
etfor
...E
oue
, vous pouvez presque toujours supprimer les espaces entre un nombre et un nom / mot4if 0else 2
est valable dans les versions 2.7.11 et 3.5.1 (et a probablement été valable pour quelques versions auparavant)Japt,
3230 octetsTestez-le en ligne! L'entrée est un tableau de chaînes.
Comment ça marche
la source
"QWERTYUIOP\nASDFGHJKL\nZXCVBNM"
un littéral prédéfini? Bien joué :-)D
est régléQWERTYUIOP\nASDFGHJKL\nZXCVBNM
, même la page à laquelle vous faites référence semble indiquerVariables <...> D 13
;
au début du programme réinitialise les variablesA-L
à différentes valeurs.D
est défini sur la chaîne du clavier. Vous pouvez trouver plus d'informations ici .Python 2.5+ et 3, 93 octets
J'ai dû tester combien de coups pour cette approche; cela utilise le fait que la
a.strip(b)
chaîne est vide si ellea
se compose uniquement de caractères apparaissant en b.La fonction prend la liste des chaînes et renvoie une chaîne.
la source
key
variable est-elle là? Je pense que vous pouvez le supprimer.key
argument de lamax
fonction est uniquement mot-clé.Rétine , 73 octets
Essayez-le en ligne!
Conclusion: la rétine a besoin d'une étape de tri.
Explication
Il s'agit d'une étape de grep: elle ne conserve que les lignes qui correspondent au regex. C'est-à-dire ceux qui sont formés exclusivement à partir de l'une de ces classes de caractères.
Il nous suffit maintenant de trouver la plus grande des chaînes restantes. Nous faisons cela en faisant correspondre tous les mots qui sont au moins aussi longs que tous les mots après eux. Il
1
s'agit d'un nouvel ajout à Retina (sorti il y a deux jours), qui limite cette étape de match à la considération du premier match de ce type. Et!
demande à Retina d'imprimer la correspondance (au lieu de la compter).la source
(?<a-b>...)
syntaxe qui est rarement nécessaire dans le golf de code.o-r
, génial.Java,
154142 ou142130 octetsParce que, tu sais, Java.
C #, pour comparaison .
146 octets si l'entrée doit être une chaîne unique avec des valeurs séparées par
\n
:134 octets si je peux assumer l'entrée en tant que chaîne [] à la place:
Légèrement non golfé:
Le deuxième lambda est un
Function<String[],String>
.la source
l->l.stream().filter(g->g.matches("[wertyuio-r]*|[asdfghjkl]*|[zxcvbnm]*")).max((a,b)->a.length()-b.length()).get()
(116 caractères)import java.util.*;
dans le nombre d'octets, ce qui signifie que la prise d'une liste est de -16 octets en prenant une liste mais +19 pour importer la liste. CEPENDANT, vous y avez attrapé en utilisantmax
au lieu dereduce
pour un gain de -7 octets.Gelée,
4034 octetsEssayez-le en ligne!
Comment ça marche
la source
Python 3, 98
Enregistré 5 octets grâce à Kevin.
Enregistré 3 octets grâce à PM 2Ring.
Enregistré 3 octets grâce à Antti Haapala.
Brute le forçant pour le moment. Je filtre les mots jusqu'à ceux contenus dans une seule ligne, puis je trie pour la longueur de chaîne maximale.
Cas de test:
la source
PowerShell v2 +, 72 octets
Prend l'entrée via les arguments de ligne de commande as
$args
, puis utilise l'-match
opérateur avec une expression régulière pour sélectionner uniquement les mots qui sont exclusivement constitués d'une ligne de clavier. Nous dirigeons ces résultats dansSort-Object
ce type par la propriétéLength
. Nous pouvons le faire car les chaînes dans PowerShell sont toutes duSystem.String
type, ce qui inclut en.Length
tant que propriété triable. Cela trie les chaînes dans l'ordre croissant par longueur, nous prenons donc la dernière avec[-1]
, la laissons sur le pipeline et la sortie est implicite.Exemple
la source
Pyth,
4535 octetsMerci à @FryAmThe Eggman de m'avoir sauvé quelques octets!
Essayez-le ici!
Prend la saisie sous forme de liste de mots.
Explication
la source
Rubis,
888269Si je ne suis pas autorisé à prendre une liste de chaînes et que je dois prendre une chaîne multiligne, ajoutez +12 au score et ajoutez
.split('\n')
juste avant l'.grep
appel.Merci à CatsAreFluffy de m'avoir enseigné les lambdas stabby à Ruby et les optimisations supplémentaires apportées par le manatwork
la source
.split('\n')
avant le.select
, non? Et pourquoi pas de lambdas poignardés?.select
l' intérieur du bloc de code est de le mettre en correspondance avec une expression régulière,.grep
est plus approprié; pas besoin de mettre des parenthèses autour des paramètres de la dernière méthode dans une chaîne d'appel;.length
a un alias plus court,.size
:->x{x.grep(/^([o-rwetyui]+|[asdfghjkl]+|[zxcvbnm]+)$/).max_by &:size}
C #, 141/112 / (120 octets)
Candidat au pire langage du golf, pour des raisons évidentes. Utilise "mes" paramètres régionaux avec qwertz au lieu de qwerty mais fonctionne bien sinon.
Programme complet sans où:
Sortie uniquement sans Où:
Seule sortie (d'origine):
la source
bash
, 105 octetsEt divers autres utilitaires, bien sûr.
la source
awk
code peut être écrit plus court comme$0=length"\t"$0
.awk,
928481 octetséconomisé 3 octets grâce à la suggestion @Wolfgang
la source
[wetyuio-r]
place, et aussi deux autres en faisant à la/^(expr|expr|expr)$/
place de `/ ^ expr $ | ^ expr $ | ^ expr $ /gawk
etmawk
sont heureux sans eux.MATL , 54 octets
Cela fonctionne avec la version actuelle (14.0.0) du langage / compilateur.
Le format d'entrée est (premier exemple)
ou (deuxième exemple)
Essayez-le en ligne!
Explication
la source
Perl, 81 octets
$a=$1 if/^([wetyuio-r]+|[asdfghjkl]+|[zxcvbnm]+)$/&&1<<y///c>$a=~y///c;END{say$a}
Le symbole à la lettre compte assez haut.
la source
Groovy, 65 caractères
Exemple d'exécution:
Notez que l'expression régulière utilisée par
.grep()
ne nécessite pas d'ancrage, ce qui permet également d'épargner le regroupement:la source