Monopoly Board
Pour ce défi code-golf, nous allons construire le jeu de société Monopoly.
Règles:
- Ne prenez aucune entrée.
- Générez une carte 11x11 dans laquelle chaque caractère ASCII constituant la carte est la première lettre de chaque espace de la version américaine de la carte Monopoly.
- Les caractères doivent être séparés par des espaces.
Go
devrait commencer en bas à droite.
La chaîne exacte à produire est
F K C I I B A V W M G
N P
T N
C C
S P
P S
V C
S P
E L
S B
J C V C O R I B C M G
Notez qu'en bas à droite les carrés sont les suivants:
G --> Go
M --> Mediterranean Avenue
C --> Community Chest
B --> Baltic Avenue
I --> Income Tax
...
J --> Jail
Modifier Wow! vous avez bien aimé celui-ci! :)
code-golf
string
ascii-art
kolmogorov-complexity
board-game
Jacksonecac
la source
la source
Réponses:
Retina , 74 octets
Les troisième à dernière et dernière lignes doivent contenir un seul espace.
Essayez-le en ligne!
Explication
Ceci remplace l'entrée (vide) par la chaîne sur la deuxième ligne.
Ceci est une étape scindée, qui scinde la chaîne autour des correspondances de la regex
(._.)
(c'est-à-dire trois caractères quelconques avec un_
au milieu). La raison pour laquelle nous plaçons l'intégralité de la regex dans un groupe est que les étapes fractionnées renvoient également les résultats de la capture de groupes. Fractionnement par exempleabcd
autourbc
donne[a, d]
, mais le fractionnement autourb(c)
donne[a, c, d]
. De cette façon, nous obtenons toutes les._.
parties sur des lignes séparées, mais également les parties de 11 caractères au début et à la fin. Nous utilisons l’_
option pour omettre les résultats vides entre les._.
matchs individuels . Le résultat serait ceci:Ensuite, nous traitons les traits de soulignement:
Ceci remplace chaque trait de soulignement par neuf
1
s. La raison pour laquelle nous utilisons1
s ici au lieu d'espaces immédiatement est qu'il est plus facile d'insérer les espaces de remplissage après.Rappelez-vous qu'il y a un espace sur la deuxième ligne. Ceci insère un espace dans chaque position qui n'est pas une limite de mot, c'est-à-dire partout sauf au début et à la fin des lignes.
Et finalement, nous remplaçons tous ces
1
objets par des espaces.la source
(._.)
.Gelée , 44 octets
Essayez-le en ligne!
Idée
Si nous supprimons une colonne sur deux et transposons des lignes avec des colonnes, nous obtenons le tableau suivant.
Maintenant, nous pouvons faire pivoter chaque colonne d'une unité vers la droite, en déplaçant tous les espaces restants vers la droite.
Ensuite, on enlève les espaces restants et remplaçons linefeeds par la lettre D .
Maintenant, nous remplaçons chaque lettre par son index basé sur 1 dans l'alphabet.
Ensuite, nous convertissons ce tableau de chiffres de la base bijective 23 en entier.
Maintenant, nous convertissons cet entier en base bijective 250 .
Enfin, nous utilisons ces chiffres pour indexer la page de code de Jelly .
Ce sont les données encodées que nous inclurons dans le programme ( 29 octets ). Pour produire la sortie souhaitée, il suffit d’inverser les étapes ci-dessus.
Code
la source
z
) avec un remplissage.05AB1E ,
4847 octetsMerci à Emigna d' avoir sauvegardé un octet!
Explication:
D'abord un peu de compression.
•(K·;“…¬È¦z"9äuŸé;TÞîÕs‡ÓÐV9XÒt\<•
est une version compressée du numéro suivant:Ensuite, cela est converti en base 33 , ce qui donne la chaîne suivante:
Les zéros sont remplacés par 9 espaces , en utilisant le code suivant
¾9ð×:
. Après cela, nousS
fendons la ficelle en caractères et les coupons en morceaux de 11 éléments (réalisés avec11ô
). Nous obtenons le tableau à 2 dimensions suivant:Nous grilleons ce tableau avec
»
et le sortons implicitement.Utilise le codage CP-1252 . Essayez-le en ligne!
la source
•(K·;“…¬È¦z"9äuŸé;TÞîÕs‡ÓÐV9XÒt\<•33B¾9ð×:S11ô»
Python 2, 89 octets
Crée le modèle
substituer en lettres via le formatage de chaîne. Le modèle utilise deux types de lignes:
l
de 11 copies de letter-plus-space, puis une nouvelle ligne. Il est également utilisé pour la première et la dernière ligne. Il a un espace de fuite.Python 3.5 peut enregistrer un octet avec la décompression de tuple
(*'...',)
.la source
PowerShell v2 +,
13112311411099 octetsCeci est juste une chaîne littérale avec des nouvelles lignes placées sur le pipeline, avec un peu
-replace
à la fin pour transformer le0
en19
espaces. Les première et dernière lignes ne sont que textuelles. Avec seulement 10 espaces et peu de répétition sinon, il n'y avait pas assez de place pour jouer au golf. Cette chaîne est laissée dans le pipeline et la sortie via implicite a lieuWrite-Output
à la fin du programme.la source
Javascript ES6 REPL ,
105102101 octetsPas très intéressant qui se passe ici. Collez dans la console pour voir les résultats souhaités
Enregistré 3 octets grâce à @Arnauld
Sauvegardé 1 octet supplémentaire grâce à @Neil
Afficher l'extrait de code
la source
1
s par des espaces et utilisez cette expression rationnelle à la place:.replace(/.( ?)/g,`$& `+`$1`.repeat(17))
1
s par des espaces et à utiliser cette fonction:a=>a-1?a.repeat(18):a+' '
/// ,
10098 octetsEssayez-le en ligne!
Pour une raison mystérieuse, il semble y avoir des espaces de fuite après la
G
s. Sans eux, mon code aurait été 96 octets.Merci à 42545 (ETHproductions) et 56258 (daHugLenny) d’ avoir réduit d’un octet chaque!
la source
G
s sur la première et la dernière ligne?Tortue , 72 octets
Essayez-le en ligne
>
tourne la tortue,"foo"
écrit les chaînes sur la grille. dernier"
était elidablela source
V ,
75, 62, 59 octetsEssayez-le en ligne!
Comme ce code contient des caractères non-ASCII, voici un hexdump:
Explication. Tout d'abord, nous entrons le texte suivant:
Ensuite, nous
<esc>
revenons en mode normal. À ce stade, le curseur se trouve sur la troisième ligne de la dernièreG
. De manière pratique, il existe une commande pour nous placer dans la première colonne de la ligne juste au-dessus du curseur. Cette commande est-
. Ensuite, une fois que nous nous retrouvons sur la deuxième ligne (sur laN
), nous exécutons la boucle suivante:Explication:
Maintenant, le tampon ressemble à ceci:
Nous utilisons maintenant une expression rationnelle compressée pour remplacer chaque caractère par ce caractère et un espace. C'est la
Í./&
partie. Cela se traduit par la regex vim suivante:Ce qui signifie:
la source
R,
149146 octetsPas si impressionnant mais aussi pas sûr de savoir comment cela serait joué. L'exploitation
paste
est en quelque sorte ma première hypothèse. Comparez au texte brut de 241 octets.R-violon
la source
Python 2, 108 octets
Un peu différent de l'autre réponse python, n'utilisant aucun remplacement, uniquement des jointures de chaînes.
la source
Perl, 90 octets
Approche assez ennuyeuse, ne peut pas penser à un meilleur moyen de réduire ... Nécessite
-E
sans frais supplémentaires. Sort un espace supplémentaire à la fin de chaque ligne. -2 octets grâce à @Dada !Usage
la source
perl -E 'say"FKCIIBAVWMG\nNZP\nTZN\nCZC\nSZP\nPZS\nVZC\nSZP\nEZL\nSZB\nJCVCORIBCMG"=~s/Z/$"x9/ger=~s/./$& /gr'
. (Remplacez\n
littéralement par une nouvelle ligne pour atteindre 90).Jolf, 72 octets
Remplacez tout
♣
par\x05
, ou essayez-le ici!Cela donne la chaîne souhaitée.
la source
Java 7,
177165142131 octets-15 octets grâce à @BassdropCumberwubwubwub .
-11 octets grâce à @Numberknot .
Non testé et code de test:
Essayez ici.
Sortie:
la source
String c(){String s=" ";return"FKCIIBAVWMG\nN_P\nT_N\nC_C\nS_P\nP_S\nV_C\nS_P\nE_L\nS_B\nJCVCORIBCMG".replace(""," ").replace("_",s);}
pour 150 (notez que stackexchange supprime les espaces excessifs)s
mais stackexchange les a supprimés. Voici l' idéone , même maintenant à 142 octetss=" "
. Dans ce cas, c'est effectivement plus court. Et.replace(""," ").replace("_",s);
peut être à la.replace("_",s).replace(""," ");
place pour -8 octets supplémentairesString c(){return"FKCIIBAVWMG\nN_P\nT_N\nC_C\nS_P\nP_S\nV_C\nS_P\nE_L\nS_B\nJCVCORIBCMG".replace("_"," ").replace(""," ");}
( 131 bytes )Befunge, 120 octets
La première ligne contient la chaîne à imprimer en sens inverse (il semble que ce ne soit pas le cas, mais le code revient en arrière sur cette ligne). La deuxième ligne imprime les lignes du haut et du bas. La troisième ligne et le côté gauche de la quatrième ligne impriment les lignes du milieu, et le petit morceau en bas à droite est une chose intéressante: il déplace le curseur vers la deuxième ligne pour imprimer la dernière ligne, mais après l'avoir terminée, quitte.
Comme vous pouvez le voir sur la première ligne, les chaînes sont séparées par des espaces afin de distinguer les première, deuxième et troisième lignes. Les espaces peuvent être n'importe quoi d'autre, et si j'avais utilisé les caractères ASCII 0-9, j'aurais pu facilement sauvegarder 4 octets. Le $ que vous voyez est juste un caractère de poubelle qui doit être présent et pourrait être remplacé par autre chose qu'un espace.
la source
J,
7773 octetsNotez que 43 octets, soit plus de la moitié du total, sont utilisés uniquement pour la chaîne.
' FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG'
.Explication
Tout d'abord, faire une liste
Alors fais sa table des fois
Puis testez l'égalité avec zéro
Aplatissez-le, trouvez les sommes cumulées et multipliez-les par élément
Joignez-vous ensuite avec des zéros, divisez-le en sous-listes de longueur 22, supprimez la tête de chaque sous-liste et utilisez les valeurs comme indices dans la chaîne.
' FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG'
la source
(' ',@,.~]);._1';FKCIIBAVWMG;N_P;T_N;C_C;S_P;P_S;V_C;S_P;E_L;S_B;JCVCORIBCMG'rplc'_';9#' '
_11,@,.&' '\'FKCIIBAVWMGN_PT_NC_CS_PP_SV_CS_PE_LS_BJCVCORIBCMG'rplc'_';9#' '
En fait , 74 octets
Essayez-le en ligne!
Ce programme fonctionne sur le même principe de base que la réponse Python 2 de xnor .
Explication (nouvelles lignes remplacées par
\n
pour plus de clarté):la source
C # 6,
192190 octetsSans espace de fuite; sans fin de ligne.
Une solution simple. Commencez avec la chaîne littérale.
Replace
!
par 9 espaces. PuisSplit
dans 11 chaînes de~
, et plus loin àchar
s (intérieurSelect
). Ajoutez un espace à chaque caractère, puisJoin
revenez à 11 chaînes. Enfin un autreJoin
par caractère newline.la source
Ruby, 92
Programme complet, impression sur stdout avec
$> <<
Il y a 40 lettres au total à tracer. Les lettres 10 à 28 alternent entre suivi d’une nouvelle ligne ou
' '*19
. Les lettres antérieures et ultérieures sont séparées par des espaces simples.la source
Perl,
115112 octetsProduit la sortie suivante:
Les première et dernière lignes de sortie ont un espace de fin. Le code utilise les remplacements de regex et le fait que si les objets ne sont pas définis, ils sont interprétés comme des chaînes (par exemple, FKCIIBAVWMG est traité comme "FKCIIBAVWMG". Impossible de supprimer les guillemets de la dernière ligne en raison de la nouvelle ligne précédente, ce qui Je ne pouvais pas me retrouver ailleurs.
Édition 1: 3 octets enregistrés en remplaçant
" "
par$"
, supprimant les parenthèses externes et en insérant un espace après l'impression, puis en supprimant les parenthèses$"x19
et en ajoutant un espace après (pour.
éviter qu'elles ne soient interprétées comme des décimales)la source
s/(.)/\1 /
peuvent être remplacés pars/./$& /
. Déposez le dernier point-virgule. Utilisezsay
au lieu deprint
(pour cela, vous devrez soit ajouter,-M5.010
soit utiliser à la-E
place de-e
, mais les deux sont gratuits (voir ici )). Newlines littérales au lieu de\n
.Charbon de bois , 66 octets
Essayez-le en ligne!
Box(21, 11, 'F K C I I B A V W M GPNCPSCPLBG M C B I R O C V C JSESVPSCTN')
.Non compétitif, 36 octets
la source
Python 2, 116 octets
Plutôt simple, quelle que soit la raison, même si le remplacement d'une chaîne est si prolixe que c'était la meilleure chose que je pouvais trouver. Peut-être en utilisant
re
pourrait être plus courte.la source
print'F K C I I B A V W M G\nN@P\nT@N\nC@C\nS@P\nP@S\nV@C\nS@P\nE@L\nS@B\nJ C V C O R I B C M G'.replace('@',' '*19)
est également 116 octets sans utiliser rejoindre si vous voulez être plus simple. Sinon,print' '.join('FKCIIBAVWMG!N@P!T@N!C@C!S@P!P@S!V@C!S@P!E@L!S@B!JCVCORIBCMG').replace('! ','\n').replace('@',' '*17)
115 octets si les espaces de fin sont autorisés. (L'argument à remplacer est "!", Au lieu de "!".)Lot, 171 octets
la source
Langue GameMaker, 148 octets
Je sais que c'est assez basique, mais je ne pense pas que cela puisse être battu en GML ...
la source
GDScript
langage duGodot
moteur de jeu. Mais, je ne suis pas sûr que ça irait :)string_repeat(" ",19)
est la même longueur que" "
.Pépin , 64 octets
63 octets de code, +1 pour le
-S
drapeau.Essayez-le en ligne!
Explication
Opérateurs utilisés:
.
(binaire) concatène (fonctionne élément par liste sur les listes).X
(binaire) chaîne-multiplie. (s
est une variable pré-initialisée à" "
.)^
(unaire) divise une chaîne en une liste de caractères..*
est un autre moyen de diviser une chaîne en caractères. Il consiste en unary.
, qui est un no-op sur des chaînes, couplé avec le*
méta-opérateur, qui mappe un opérateur unaire sur chaque élément de son opérande (itérable). L'utilisation.*"..."
nous permet de sauvegarder un octet(^"...")
- les parenthèses seraient nécessaires car la.
priorité est plus grande que^
.PE
ajoute un élément à une liste.AE
ajoute un élément à une liste.Sur cette base, voici le code étape par étape:
Lorsque ce résultat est imprimé automatiquement, l'
-S
indicateur joint les sous-listes des espaces et la liste principale des nouvelles lignes, donnant ainsi le résultat souhaité.la source
C,
171156 octetsAffiche également un caractère de fin de ligne suivant ... Peut-être encore mieux joué au golf.
la source
Perl 5,
9286 octetsUtilisations
sprintf
, remplissage et opérateur de répétition de chaînex
.la source
\n
Toutefois, vous pouvez économiser quelques octets: remplace par des passages à la ligne littéraux, vous n'avez pas besoin d'espaces entre l'x
opérateur et le nombre qui suit, et remplacez enfinsplit//,xxx
parxxx=~/./g
.Haskell,
128125114 octetsEssayez-le ici
((:" ")=<<)
isconcatMap (\a -> [a,' '])
- les pads en ajoutant un espace derrière chaque lettre de son entréela source
Powershell, 95 octets
Inspiré par la réponse de @ AdmBorkBork .
Explication
Le premier opérateur remplaçant crée le rectangle
11x11
.Le deuxième opérateur remplaçant insère un espace après chaque caractère. Le résultat a des espaces de fin.
la source