Voici un défi simple pour vous: Vous devez produire cette représentation ASCII d’un échiquier. Le blanc est représenté par des majuscules et le noir par des minuscules. Les tuiles vides sont représentées par un .
. Voici la pension complète:
rnbqkbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKBNR
Comme il s’agit d’une question de complexité kolmogorov , vous ne pouvez effectuer aucune saisie et vous devez sortir ce tableau par n’importe quelle méthode par défaut, par exemple, enregistrer un fichier, imprimer sur STDOUT ou revenir d’une fonction. Vous pouvez éventuellement produire une nouvelle ligne de fuite. Les failles standard s'appliquent et le programme le plus court en octets!
Toutefois, rappelez-vous qu’il s’agit tout autant d’une mise en concurrence de soumissions rédigées dans la même langue. Bien qu'il soit peu probable qu'un langage comme Java puisse battre un langage comme Perl ou un langage de golf comme Pyth ou Cjam, il est toujours impressionnant d'avoir la réponse Java la plus courte possible! Pour vous aider à suivre la réponse la plus courte dans chaque langue, vous pouvez utiliser ce classement, qui présentera la soumission la plus courte par langue et dans son ensemble.
Classements
Pour vous assurer que votre réponse apparaît, commencez votre réponse par un titre, en utilisant le modèle Markdown suivant:
# Language Name, N bytes
où N
est la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores en les effaçant. Par exemple:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Si vous souhaitez inclure plusieurs numéros dans votre en-tête (par exemple, parce que votre score est la somme de deux fichiers ou si vous souhaitez répertorier séparément les pénalités d'indicateur d'interprétation), assurez-vous que le score réel est le dernier numéro de l'en-tête:
# Perl, 43 + 2 (-p flag) = 45 bytes
Vous pouvez également faire du nom de la langue un lien qui apparaîtra ensuite dans l'extrait de classement:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
la source
ASCII art
échiquier aurait le plein arrêt chaque carré?Réponses:
Gelée ,
25 à24 octetsEssayez-le en ligne!
Merci à @Lynn pour le golf d'un octet!
Comment ça marche
la source
Vim, 26 octets
irnbqkbnr<Esc>Y6p5Vr.VrpYGPgUj
S'appuie sur un nouveau Vim, sinon
5V
vous pouvez sélectionner la mauvaise zone.irnbqkbnr<Esc>
: Écrivez la rangée du haut. Assez facile.Y6p
: Faire le reste des lignes, sauf une . Bien sûr, toutes les lignes sauf les premières et les dernières contiennent les mauvais caractères.5Vr.
: Lorsque vous n'avez pas encore utilisé le mode visuel dans la session, vous pouvez procéder comme ceci pour sélectionner 5 lignes. Si vous tapez à nouveau la même chose tout de suite, il essaiera de sélectionner 25 lignes. Vim est bizarre comme ça.Vrp
: Nous sommes déjà sur la ligne 2, alors faisons une ligne de pion.YGP
: Copiez cette ligne de pion à sa place en bas. C'est pourquoi j'ai utilisé6p
au lieu d'7p
avant.gUj
: Capitaliser les pièces blanches.la source
Brainfuck , 224 octets
Il a fallu presque une heure pour l'obtenir.
la source
Python 2, 63 octets
Malheureusement, l'approche assez simple était beaucoup plus courte que le "malin" que j'avais essayé au début ...
Réponse bonus, également 63 octets:
la source
05AB1E , 24 octets
Utilise le codage CP-1252 .
Essayez-le en ligne!
Explication
la source
En fait , 26 octets
Essayez-le en ligne!
Explication:
la source
Cheddar, 56 octets
Utilise la nouvelle
=>
fonctionnalité.Explication
la source
Pyke,
282726 octetsEssayez-le ici!
J'ai appris quelque chose de nouveau sur ma langue aujourd'hui: cela
1c
peut être utilisé comme moyen de scinder une chaîne de caractères en une liste de caractères.la source
MATL , 26 octets
Essayez-le en ligne!
Explication
la source
Ruby,
45441 octet économisé grâce à tuxcrafting.
C'est 45
Essayer quelque chose d'intelligent semble juste le rendre plus long.
la source
puts
JavaScript (ES6),
69 à65 octets4 octets sauvés grâce à edc65
la source
'rnbqkbnrnp....PRNBQKBNR'.replace(/p|\./ig,c=>c.repeat(8)+'\n')
(changement\n
de nouvelle ligne)C #,
9492 octetsEdit: Merci à milk d’ avoir économisé 1 octet en modifiant l’ordre des chaînes pour supprimer les espaces de retour.
Édition: 1 octet supplémentaire enregistré en ajoutant un paramètre factice ( x au lieu de () ) pour la fonction anonyme et en l’appelant avec n’importe quel objet.
Programme complet utilisant la fonction ci-dessus:
C # est un langage très prolixe ...
Programme complet en C #, 131 octets
Ungolfed:
la source
a
etb
en majuscule, vous pourrez alors vous débarrasser de l'espace aprèsreturn
:return(a+b).ToLower()+...
var
au lieu destring
?var
plusieurs déclarations sur une seule ligne. Alors ,string a="rnbqkbnr\n",b="pppppppp\n",c="........\n";
deviendraitvar a="rnbqkbnr\n";var b="pppppppp\n";var c="........\n";
, ce qui augmente le nombre d'octets. EDIT: Cela donnerait une erreur " Une déclaration de variable locale implicitement typée ne peut pas inclure plusieurs déclarateurs " .Python 2, 68 octets
La publication de toute façon bien que la version ci-dessus de Python 2 soit plus courte. Il ne serait pas nécessaire que le nombre d'octets soit égal à un, mais simplement de jouer avec.
la source
z
n’est utilisé qu’une fois, vous pouvez vous en débarrasser et produire les points de la déclaration print.Haskell, 53 octets
a
est utilisé comme première ligne et pour déterminer la longueur des chaînes constituées dep
,.
etP
(-><$a
). .la source
JavaScript (ES6), 73
.toUpperCase
est tout simplement trop longla source
(r=c=>c[0].repeat(8)+
\ n,b=r
.)=>
vous sauve un octet.PowerShell v2 +, 44 octets
Les chaînes laissées sur le pipeline sont implicitement imprimées
Write-Output
lors de l'exécution du programme. Nous couplons cela avec le comportement de nouvelle ligne par défaut pour un tableau afin de produire les quatre lignes de périodes avec l'opérateur virgule.la source
,
crée un tableau (dans ce cas, un tableau de chaînes). La valeur par défautWrite-Output
à l'achèvement du programme insère une nouvelle ligne entre les éléments laissés sur le pipeline, y compris des éléments de tableau individuels. Donc, nous abusons du comportement de sortie par défaut pour ne pas avoir besoin d'écrire des retours à la ligne explicites dans le code.V ,
27, 26 octetsEssayez-le en ligne!
Cela contient des caractères non imprimables, donc voici la version lisible:
où
<esc>
représente0x1B
. Explication:la source
Emotinomicon, 89 octets
Malheureusement, Emotinomicon n'a rien à voir avec une fonction de pile dupliquée. Serait utile. Mais au moins plus court que Java. :)
Explication:
la source
Brain-Flak ,
366350 + 3 = 353 octetsEssayez-le en ligne!
Cela donne un plus 3 parce que cela nécessite le
-A
drapeau pour fonctionner correctement.Explication
la source
((((((((((((((((((((()()()()()){}){}){}()){})[()()()()])[([][][]){}])[][][])[]()())[[][][]])[][])()()()())<([]()())>[()()]))))))))
lesquelles, je pense, vous économiserait 16 octets. Cela n'utilise pas du tout la pile alternative, elle pourrait donc être encore plus courte.Python 3.5, 56 octets
Ceci utilise une idée de zawata pour encoder chaque ligne
(r*8)[:8]
, avec une chaîne répétée 8 fois et ajustée à la longueur8
. Les pions et les lignes vides sont juste'p'*8
,'.'*8
et'P'*8
, sans coupe. La première ligne utilise'rnbqkbn'
, avec l’('rnbqkbn'*8)[:8]
ajout d’une autre tour à droite lors de la multiplication et de la réduction. La dernière ligne est la même mais en majuscule.Nous exprimons la liste des éléments de ligne de manière compacte à l'
['rnbqkbn','p','.','.','.','.','P','RNBQKBN']
aide du décompactage généralisé de Python 3.5 . Nous écrivons les première et dernière entrées, et celles qui ne contiennent qu'un seul caractère sont extraites d'une chaîne.En Python 2, nous pourrions nous contenter
split
de 60 octets:la source
Python 3,
828075 octetsCe n’est pas la réponse la plus courte en python, mais c’est ma première et je pense que c’est très bien pour la première fois
la source
[:8]for i in['rnbqkbn'....
'rnbqkbn p . . . . P RNBQKBN'.split()
.Lot, 105 octets
Le lot est sérieusement commenté ...
la source
R, 75 octets
Edit: Correction d'une erreur stupide et écrivez simplement la partie majuscule du tableau maintenant.
la source
\n
Powershell,
8273 octetsla source
*per
chose avant, et un Google ne me donne aucun indicateur. Vous avez une explication?J,
5552 octetsÉtapes de test et intermédiaires
la source
Python 3, 64 octets
Basé sur DLosc répondre à Python 2 comme sur le mien je ne pouvais pas améliorer.
1 octet de moins par rapport à "\ n" .join
la source
q, 51 octets
la source
-1 flip"p...P"{y,x,upper y}/:"rnbqkbnr";
. 40 octets. Belle solution quand même!GNU sed, 54 octets
Essayez-le en ligne!
Explication:
Les pièces noires sont imprimées en premier, en sauvegardant les deux rangs de cartes associés dans l’ordre inverse dans l’espace réservé. Les pièces blanches sont imprimées en convertissant l'espace de maintien en lettres majuscules.
la source
Java 7,
1039989 octets10 octets économisés par rapport à la sortie codée en dur grâce à l’ approche de @SLC dans sa réponse en C # .
Essayez ici.
Sortie:
la source
String f(){return"rnbqkbnr\npppppppp\n........\n........\n........\n........\nPPPPPPPP\nRNBQKBNR";}
. C'est 100 octets .C #,
85848374 octetsEdit: Accidentellement eu trop de lignes d'espaces vides!
Edit: libéré un caractère supplémentaire et corrige la commande (par mégarde, tout a été inversé) merci beaucoup à @KevinCruijssen
Edit: Retourné à 83 parce que j'avais les crevettes sur la mauvaise ligne
Edit: Merci à @adrianmp qui m'a aidé à le réduire davantage en omettant de revenir
En utilisant le même format que la réponse @adrianmp ci-dessus:
Programme complet utilisant la fonction ci-dessus:
la source
return "
, il devient:x=>{return"rnbqkbnr\npppppppp\nxxxxPPPPPPPP\nRNBQKBNR".Replace("x","........\n");};
. Bonne réponse, donc +1 de moi. Et profitez de votre séjour ici. :)x=>"rnbqkbnr\npppppppp\nxxxxRNBQKBNR\nPPPPPPPP".Replace("x","........\n");