... Pas que vous voudriez, voulez-vous? La tâche est simple, affichez le texte suivant:
____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ________
||` |||1 |||2 |||3 |||4 |||5 |||6 |||7 |||8 |||9 |||0 |||- |||= |||BS ||
||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||______||
|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/______\|
________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____
||TAB |||Q |||W |||E |||R |||T |||Y |||U |||I |||O |||P |||[ |||] |||\ ||
||______|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__||
|/______\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|
_________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ________
||CAPS |||A |||S |||D |||F |||G |||H |||J |||K |||L |||; |||' |||ENTER ||
||_______|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||______||
|/_______\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/______\|
___________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ___________
||SHIFT |||Z |||X |||C |||V |||B |||N |||M |||, |||. |||/ |||SHIFT ||
||_________|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||_________||
|/_________\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/_________\|
C'est le clavier du futur car à l'avenir, les espaces ne sont pas pertinents, les barres d'espace le sont aussi.
Pour vous faciliter la tâche:
0123456789ABC...XYZ-=[]\;',./
- Ces caractères sont sur des clés de longueur 6 (y compris le rembourrage).TAB / BS / ENTER
- Ces touches sont de longueur 10 (y compris le rembourrage).CAPS
- Cette clé est de longueur 11 (y compris le rembourrage).SHIFT
- Cette clé est de longueur 13 (y compris le rembourrage, des deux côtés).
Chaque clé individuelle ressemble plus ou moins à ceci:
____
||* ||
||__||
|/__\|
Cependant, vous devez noter que deux clés consécutives ne sont pas:
____ ____
||* ||||* ||
||__||||__||
|/__\||/__\|
Mais ils sont "conjoints":
____ ____
||* |||* ||
||__|||__||
|/__\|/__\|
Ce défi ne devrait pas être trop mauvais, bonne chance à vous; ne manquez pas d'abuser de la répétition! Mais ne sous-estimez pas non plus les touches "spéciales";).
Gagnant?
Le code le plus court gagne car c'est le code-golf que vous connaissez.
code-golf
ascii-art
kolmogorov-complexity
Urne Magique De Pieuvre
la source
la source
Réponses:
V ,
189, 179, 175, 164, 161, 157, 155, 149, 145, 141, 135 octetsEssayez-le en ligne!
Cette réponse est maintenant tweetable!
Regardez-le courir! Ceci est une version légèrement modifiée qui se met à jour au fur et à mesure de son exécution pour vous permettre de voir comment cela fonctionne. Ceci est une version obsolète puisque je n'ai pas encore pris la peine de le réenregistrer, mais l'approche générale est identique.
C'est probablement la plus longue réponse en V jamais écrite. Cela n'a certainement pas aidé que l'interprète de V soit extrêmement lent. Il m’a fallu environ une heure pour écrire la première révision, mais j’y suis retourné à plusieurs reprises pour gagner quelques octets à chaque fois. Le clavier complet ayant une longueur de 1215 octets, cette réponse est actuellement 91% plus courte que la sortie. Je suis donc assez satisfait du résultat.
Comme il contient des caractères non imprimables et beaucoup de caractères non-ASCII, voici un vidage hexadécimal:
Comment diable ça marche?
Bon, cette explication va être un doozy. Tu es prêt? Tout d’abord, nous devons entrer les lettres pour pouvoir construire les clés autour d’elles. C'est
Quels inserts:
Cela entre assez facilement, mais nous utilisons quelques astuces pour sauvegarder des personnages. Par exemple, entrez
¬19
"123456789",³
entrez trois espaces et nous dupliquons le décalage afin d'éviter de le saisir plusieurs fois.Notez comment les lettres sont en minuscule ici. Cela permet de distinguer facilement les touches majuscules telles que "ENTRER" et les lettres simples. En les écrivant de cette manière, il est plus facile de déterminer quels caractères doivent être placés avant, et d'ajouter un octet pour les convertir en minuscules plus tard. Nous faisons donc une commande de substitution pour convertir ceux-ci en majuscules, et ajoutons un espace après chacun d'eux:
Maintenant, prenons chaque séquence de touches (toute série d’espaces non-blancs) et mettons trois barres avant et après elles:
À ce stade, le tampon ressemble à ceci:
Avoir trois barres sur les première et dernière colonnes est en fait très pratique et permet d'économiser beaucoup d'octets à long terme.
Et voici où nous courons une boucle géante. Cela convertira quelque chose comme ceci:
dans quelque chose comme ça:
Tout ce qui se trouve entre deux instances de
ò
fonctionnera jusqu'à ce qu'une erreur se produise, ce qui se produira lorsque nous essayons de monter dans une ligne qui existe encore. Comme nous venons d'exécuter une commande de substitution globale , notre curseur se trouve sur la dernière ligne et nous allons les transformer en remontant.C'est le
ligne.
C'est le
Ligne.
C'est le:
Ligne.
Nous avons maintenant le clavier complet, mais chaque ligne contient une barre supplémentaire, une barre oblique supplémentaire (en avant ou en arrière) ou un trait de soulignement supplémentaire. Solution super facile
Après toute cette folie, le tampon est implicitement imprimé.
la source
Lua 5.3,
416394 octets.Ungolfed et avec des commentaires.
Sortie
Je vais être détruit par d'autres langues, mais je pensais tenter le coup. Belle quantité de complexité, et au moins c'est plus court que le clavier!
la source
Bubblegum , 191 octets
Essayez-le en ligne!
la source
Haskell, 263 caractères (353 octets UTF-8)
Comme il a été beaucoup question de la partition à la lumière de ces caractères unicode ... voici le même programme, réduit à tout ASCII:
Haskell, 263 caractères (263 octets UTF-8)
la source
ENTER
sont plus longs que les caractères↩︎
.ENTER
et↩︎
, le remplissage d'espaces en fait la même longueur.PHP, 303 octets
Fainéant mais efficace. :)
la source
<?=gzinflate(base64_decode('rdO5DoJAEIDhnqegs/G+jbHA+0QEvDHrg8zDy79EMbTDFF+3m8yfXdek42phHJG3KyItaEMHutCDPgxgCCNoQg0mMI3cdETSu4wRLQx3NYxJtDCJOL9t1cnSFWNvareVE1xhASHEcIczbOAIATzhBck3V7atupuTb6vulucq43XNvCDKenkQwRyWsII1bGEHexhDxcb140X4n6us16XuVXxdulZZrmi9WcbZd5IH3GAGF/vXwIcDVKEODVs3P53nUrUq5FK1sqc/'));
. Compresseur: sandbox.onlinephpfunctions.com/code/… Décompresseur: sandbox.onlinephpfunctions.com/code/…Python 3.5+, 239 octets
la source
"".join(...) + f[0]
dans la boucle interne. L'échange de l'format
ordre des arguments et des espaces réservés dans la chaîne enregistre également deux octets supplémentaires.['{1}__ ','|{} ||','|{1}||','/{1}\\|']
est plus courte que l'utilisation desplit
.Lot,
465452 octetsLe
:c
sous-programme gère une ligne de clés. Les clés contenant des espaces supplémentaires doivent être cités, comme les=
,;
,,
clés, peut - être en raison d'un bogue dans lashift
commande. Les premier et dernier paramètres sont des chaînes de_
s de même longueur que les première et dernière clés pour faciliter la concaténation.t
puis se termine comme le_
s commun aux première, troisième et quatrième lignes, avec#
s marquant la jointure, qui sont remplacées de manière appropriée avant l’ajout des caractères de début et de fin, tandis ques
c’est la deuxième ligne, mais|
s est changé en!
s lorsqu’elles se réduisent le nombre de"
s dont j'ai besoin. Édition: enregistré 1 octet en imprimant les quatre lignes dans une seule instruction et 12 octets en optimisant la manière dont j'ai affecté las
variable.la source
Ruby, 226 octets
Améliorations comme suit:
1.Aucun élément de chaîne vide au début et à la fin du tableau. Au lieu de cela, la matrice est triplée pour créer 3 claviers côte à côte. Après la conversion en chaîne, nous avons 3 claviers avec des bords extérieurs manquants. Ceci est tronqué pour afficher uniquement celui du milieu, avec des arêtes.
Version 2.Changed de Ruby. Utilisé Ideone au lieu de 1.9.3 installé sur ma machine. Ce moyen
.chars.to_a
peut être réduit à juste.chars
.Ruby, 239 octets
Il reste encore quelques octets à jouer. Je vais regarder demain.
non-golfé
la source
C #, 357 octets (sur une seule ligne et intégrant la plupart des suggestions)
Ou, 353 avec interpolation de chaîne et autres suggestions
Ungolfed (sans interpolation de chaîne):
la source
foreach(var r in q){for(int i=0;i<4;i++){foreach...
==
par<
s+=i<1?$" {u}__":i<2?$"||{k.PadRight(l)}|":i<3?$"||{u}|":$"|/{u}\\";
PowerShell v2 +, 465 octets
Je suis à moitié embarrassé d'afficher cette réponse, étant donné la brièveté des réponses PHP et Python, tenez compte de la réponse C #, mais je ne parviens pas à obtenir cette méthode plus courte. D'autres approches peuvent donner de meilleurs résultats.
En gros, il s’agit simplement d’une chaîne géante de plusieurs lignes, avec des variables (
$a
et autres) se substituant à différentes chaînes, et quelques-replace
secondes à la fin pour la terminer. Des blocs de script$(...)
sont insérés si nécessaire pour introduire de nouvelles variables.Essayez-le en ligne!
la source
Python,
493458 octets.Fonctionnellement équivalent mais un peu plus lisible:
Malheureusement, c'est déjà plus long que la réponse fournie à Lua.
la source
p
fonction sur une ligne, séparées par des points-virgules. De plus, je pensais que vous ne pouviez pas faire la première lignek=[['|']*75]*16
, savez-vous pourquoi?'_'
et' '
à une variable pour sauver quelques octets.range(16)
pour[0]*16
.for l in k:print ' '.join(l)
àfor l in k:print''.join(l)
.PHP,
316312 octetsJe suis à peu près sûr que cette approche ne peut plus être utilisée. Mais si quelqu'un trouve 10 octets supplémentaires ...: D
Run with
-r
.panne
la source
Bash (sur OSX),
128 + 221 + 1 =234230 octetsOui, je sais, la compression. Mais ça marche, non?
Requiert un fichier appelé "f" dans le répertoire en cours avec le contenu suivant (placé en base64 pour la compatibilité PPCG - vous pouvez le décoder dans le fichier "f" en premier):
la source
gunzip<f
.zcat f
et 2 octets en supprimant les deux octets nuls de fin (gzip se plaint mais produit la sortie souhaitée).zcat<f
alors. Sous Linux, zcat sans les zéros de fin fait gzip se plaindre («gzip: stdin: fin de fichier inattendue») mais uniquement après avoir imprimé le résultat souhaité.JavaScript (ES6), 286
Une fonction anonyme sans paramètres
Moins golfé
la source
Rapide, 777 octets
Swift n’est généralement pas une excellente langue de choix pour jouer au golf. Par conséquent, être
moins du double de la plus petite réponse actuelle(c’était rapide)est un bon défi ici!Ungolfed:
la source
SOGL V0.12 ,
131128127 octets (en compétition? )SOGL a le
2*2/
et les2/2*
bizarreries, mais celles-ci se sentent trop intégrées à ce défi.Essayez-le ici!
la source
Python 2,
394388380 octetsIl suffit de construire une grosse chaîne représentant l’ensemble du clavier, remplace * par% s pour les touches spéciales, puis utilise le formatage de chaîne pour mettre à jour les promotions.
Modifier
Il y a maintenant un retour à la fin à la fin de la sortie, mais je ne vois aucun endroit non autorisé.
Essayez-le en ligne!
la source
C #, 376 octets (sur une seule ligne)
Ceci est entièrement basé sur la réponse C # de Klinger. Je n'ai pas assez de rep pour commenter sa réponse, sinon je le ferais.
J'ai pu réduire le code de Klinger de 5 octets en modifiant la boucle initiale foreach et en supprimant les crochets superflus.
la source
m4, 456
Ungolfed:
(C’est en fait la première fois que je joue au code et que j’essaie m4.)
la source
empilés , 228 octets
Essayez-le ici!
Ou légèrement plus lisible:
Cela fonctionne en définissant une fonction
p
qui crée une clé, puis enhcat
utilisant plusieurs clés.la source
Haskell, 255
Rétrospectivement, le concept est similaire à celui de cette réponse de Haskell , mais le clavier ASCII est produit et le jeu est légèrement différent.
Formaté et renommé:
la source
tcl, 368
Tel que compté par http://textmechanic.com/text-tools/basic-text-tools/count-characters-words-lines/ avec la mention "Le nombre de lignes est divisé en espaces." réglé sur on, il occupe
505496452451439403401396391388385384382379378377369368Démo: http://rextester.com/live/NTVAV88033
L'Ungolf:
Coopération en direct sur http://rextester.com/live/UDO43692
Tout le monde est libre et bienvenue pour améliorer ma version sur les sites de coopération en direct, mais s'il vous plait: ne modifiez pas ma réponse originale ici; Dites simplement que vous avez édité dans les commentaires et que les gens visiteront les liens.
UPDATE 1: remplacé
for
parforeach
, car ce dernier produit un code plus courtUPDATE 2: remplacé
foreach
parlmap
, car ce dernier produit un code plus courtUPDATE 3: Rasé un caractère parce que je l'ai remplacé
" "
par\
MISE À JOUR 4: En ce qui concerne le premier commentaire, j'ai changé tous les caractères de substitution de caractères Unicode de 1ère ligne sur 2 octets en caractères ASCII à 1 octet.
UPDATE 5: plusieurs
puts
lignes en une seuleUPDATE 6: utiliser directement les
split
commandes renvoyant des valeurs sur l'lmap
appel au lieu d'utiliser des variables de liste intermédiairesMISE À JOUR 7: Les citations
ENTER
n'étaient pas nécessairesUPDATE 8:
string map
est assez long et répété un certain nombre de fois qu’il vaut la peine de l’encapsuler dans unproc
UPDATE 9:
split $x \n
est suffisamment long et répété plusieurs fois pour qu'il soit utile de l'encapsuler dans unproc
UPDATE 10: La chaîne "de remplacement" peut être utilisée à la
&
place de\1
, car dans ce cas les deux coïncident; une autre conséquence est que cela permet de se débarrasser de()
la chaîne "correspondante".UPDATE 11: Utilisez
@
plutôt\n
que comme séparateur de ligne pour une utilisation ultérieure dans lessplit
instructions. Bien que la chaîne « match » de rallonge\S
pour[^@]
elle est payante, en raison du nombre de répétitionsUPDATE 12: Remplacement de la première
regsub
chaîne "match"{[^@|]}
par\[^@|]
pour supprimer un caractère. Malheureusement, ne pouvait pas faire la même chose à la seconderegsub
, parce que l'instruction est à l'intérieur d'une paire de[]
:(UPDATE 13: Rasé à deux Entrez les caractères en concentrant le
lmap
corps avec son propre en-tête.UPDATE 14: Utilisé un appel à la
split
procédure baséeN
au lieu d'un appel direct à lastring map
procédure baséeN
qui permet de raccourcir de 3 caractèresMISE À JOUR 15: Il y avait un
caractère d'espace inutile . Supprimé pour raser un caractère.
UPDATE 16:
set h
peut être intégré pour se débarrasser d'$h
un personnage.UPDATE 17:
set h
déclaration peut vraiment être rasé.UPDATE 18: l'
puts
argument est passé du...\n...\n...\n...
format auformat.
Merci aux gens qui m'ont aidé à le raccourcir, en particulier evilotto et l'aspect du canal IRC de tcl!
la source
tcl, 369
Initialement basé sur la version sergiol de tcl.
(Notez que beaucoup d'espaces à gauche font partie de la "nature" de tcl)
la source
foreach
occurrences parlmap
!interp alias
J'ai essayé d'utiliser votre approche pour raccourcir ma version, mais le plus court que j'ai pu obtenir en le faisant était 398 :( rextester.com/live/NTVAV88033lmap z {S R M N} w {set "regsub -all" "string map" split} {interp alias {} $z {} {*}$w};lmap y [N [S b [M [N {||||@|||@$@BS @%@TAB @&@CAPS @? @ENTER @*@SHIFT } @] [R {[^@]} "`1234567890-=$@%QWERTYUIOP\[\]\\@&ASDFGHJKL;'?@*ZXCVBNM,./*" {||& ||}]]] @] z [N [S f [R {[^@|]} $b _]] @] w [N [S g [M {||_ |/_ _|| _\\|} [M {||| \\|/} $f]]] @] x [N [M {\\ _ / _ | \ } $g] @] {puts $x\n$y\n$z\n$w}
C (gcc) ,
378342330 octets-10 octets grâce à ceilingcat.
Un premier coup de poignard. Les répétitions de g () suggèrent des possibilités d'amélioration.
Edit: Nous y voilà.
Essayez-le en ligne!
la source
Python 2, 672 octets
Utiliser une chaîne zlib compressée:
la source
len("print 'x\x9c...'")
lequel le décollement se produira, ce qui donnera\x
un nombre d'octets incorrect . Vous pouvez obtenir un nombre correct en comptant avec,len(r"print 'x\x9c...'")
mais la solution la plus simple est, comme toujours, de voir ce que dit votre éditeur de texte ou votre système de fichiers.Powershell,
249242 octetsUngolfed & Explained
Le middot
·
utilise à la place des espaces pour clarifier la chaîne source.Extra: clavier avec barre d'espacement et étiquettes alignées à droite, 278 octets
J'ai ajouté quelques octets à l'expression régulière pour gérer la barre d'espace (ancienne expression rationnelle
(.[a-z ]*)
, nouvelle~|(.[a-z ]*)
). C'est un petit pas pour l'expression rationnelle, un pas de géant pour la solution: vous pouvez maintenant afficher la barre d'espacement et les étiquettes de touches alignées à droite (voir SHIFT, CTRL et BS du côté droit du clavier).Sortie:
la source
/// , 360 octets
Essayez-le en ligne!
la source
Mathematica 323 octets
Ennuyeux et peu créatif. La chaîne n'est que la sortie de la
Compress
commande intégrée appliquée à la sortie souhaitée.la source
Wolfram Language (Mathematica) , 293 octets
Essayez-le en ligne!
Relativement simple: encode des lignes de clés sous forme de listes de
(key name)|(key width)
la source
Perl 5
-MList::Util=pairmap
, 313 octetsEssayez-le en ligne!
la source