ISO 3166-1 est la norme qui définit tous les codes de pays. Les codes à deux lettres bien connus (US, GB, JP, etc.) sont appelés codes Alpha-2.
Avec deux lettres, il n'y en a que 26 2 = 676 codes possibles, qui peuvent être joliment disposés dans une grille. Ce tableau peut être utile comme aperçu, pour voir quels codes sont réellement utilisés, réservés, etc.
Ce défi est simple: vous êtes d'imprimer tous affectés codes de cette grille à STDOUT, en utilisant ASCII ordinaire, exactement comme indiqué ci-dessous:
AA AC AD AE AF AG AI AL AM AN AO AP AQ AR AS AT AU AW AX AZ
BA BB BD BE BF BG BH BI BJ BL BM BN BO BQ BR BS BT BU BV BW BX BY BZ
CA CC CD CF CG CH CI CK CL CM CN CO CP CR CS CU CV CW CX CY CZ
DE DG DJ DK DM DO DY DZ
EA EC EE EF EG EH EM EP ER ES ET EU EV EW
FI FJ FK FL FM FO FR FX
GA GB GC GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY
HK HM HN HR HT HU
IB IC ID IE IL IM IN IO IQ IR IS IT IU IV IW IX IY IZ
JA JE JM JO JP
KE KG KH KI KM KN KP KR KW KY KZ
LA LB LC LF LI LK LR LS LT LU LV LY
MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ
NA NC NE NF NG NI NL NO NP NR NT NU NZ
OA OM
PA PE PF PG PH PI PK PL PM PN PR PS PT PW PY
QA QM QN QO QP QQ QR QS QT QU QV QW QX QY QZ
RA RB RC RE RH RI RL RM RN RO RP RS RU RW
SA SB SC SD SE SF SG SH SI SJ SK SL SM SN SO SR SS ST SU SV SX SY SZ
TA TC TD TF TG TH TJ TK TL TM TN TO TP TR TT TV TW TZ
UA UG UK UM US UY UZ
VA VC VE VG VI VN VU
WF WL WO WS WV
XA XB XC XD XE XF XG XH XI XJ XK XL XM XN XO XP XQ XR XS XT XU XV XW XX XY XZ
YE YT YU YV
ZA ZM ZR ZW ZZ
(Si j'ai fait des erreurs en le copiant, le tableau ici dans cet article est normatif pour le défi, pas celui sur Wikipedia.)
Vous pouvez ou non utiliser des espaces de fin dans chaque ligne qui ne contient pas le *Z
code, mais pas au-delà du 77e caractère de cette ligne (c'est-à-dire, tout au plus, vous pouvez en faire un bloc rectangulaire, se terminant par des Z
s et des espaces). En outre, vous pouvez ou non utiliser une seule nouvelle ligne de fin à la fin.
Il s'agit du code golf, donc la réponse la plus courte (en octets) l'emporte.
la source
YT
(Mayotte) est-elle un oubli?Réponses:
CJAM,
125122121 octetsCe qui précède utilise la notation caret pour les caractères de contrôle.
Version imprimable ( 141 octets ) pour l' interprète en ligne :
Exemple d'exécution
la source
Python 2, 240 octets
Implémentation simple du codage binaire.
Le script pour générer l'entier est rapide et sale:
la source
R=range(26)
....,36)&1<<c+r*26else...
. - Pourriez-vous publier votre script pour générer l'entier en base 36?26else
n'est pas analysable. Je pensais avoir essayé de supprimer les parenthèses mais je devais avoir eu autre chose de mal à ce point!26else
. (Python 2.7.6, cependant, ne le fait pas.)Ruby,
269 246 241 235227g
est une matrice où chaque cellule qui a un code de pays est un1
et toutes les autres0
. Toutes les lignes sont écrites derrière et le nombre binaire résultant a été converti en une représentation de base 36. Ensuite, je répète simplement toutes les cellules et vérifie si le code doit être imprimé.la source
{|i|...}
place dedo|i|...end
et également commencer la première instruction juste après|i|
(sans saut de ligne). Une manière plus courte d'imprimer sans saut de ligne de fin est$><<
. Vous pouvez remplacer"\n"
par$/
et"1"
par?1
. Et un moyen plus court de générer l'alphabet estl=[*?A..?Z]*''
;)print
par$><<
une matrice detrue
etfalse
est imprimée. Comment utiliser cela correctement?<<
est une méthode de$>
, donc vous devez utiliser des parenthèses:$><<(1==2?3:4)
. Soit dit en passant, le plus court que j'ai obtenu est de 231 caractères: pastebin.com/iabBNh6S .print
ou$><<
, utilisez-en un seul.print
accepte plusieurs paramètres séparés par,
, car$><<
vous pouvez concaténer les deux pièces à produire.CJAM,
152 148 145 144 149 140139 octets, imprimableMerci Dennis pour les pointeurs.
Approche assez simple. Comment ça marche:
Essayez-le en ligne ici
(Maintenant seulement si je savais comment faire une version de caractère non imprimable)
la source
:i
n'est pas nécessaire;b
fonctionne très bien avec une chaîne comme deuxième argument. 2. Si vous utilisez'[,
au lieu de91,
, vous n'en avez pas besoin:c
.'[,65>
route, mais je mettais toujours un:c
après ce qui conduisait aux mêmes octets, donc je ne l'ai pas utilisé: DJavaScript ES6,
336322La grande chaîne est chaque ligne mise en binaire (
1
s'il y avait un code de pays,0
sinon), puis en base36. Essayez-le dans Firefox à http://jsfiddle.net/twduhqz6/1/ .la source
Bash + coreutils, 361
Suppression de regex de base des combos dont nous ne voulons pas. Une légère compression de l'expression régulière:
la source
Haskell, 357
Merde, c'est un peu difficile.
Imprime vers STDOUT une fois compilé (donc le principal). Utiliser une compression appropriée rendrait cela beaucoup plus court ... des idées bienvenues
la source
JavaScript (E6) 350
Pas le bon outil pour cette tâche (peut-être grâce à String.fromCharCode ?)
la source
J, 172 caractères (imprimable)
Sauts de ligne pour plus de lisibilité. Emballage binaire simple, avec six bits par caractère de chaîne (décalage 34 pour entrer dans la plage imprimable et éviter
'
).la source
Langue Wolfram, 244
255octetsLe numéro de la réponse de fireflame241 a été utilisé et reconditionné sous forme de 36 zones.
Aucune donnée interne au pays n'a été utilisée.
la source
PHP, 323 octets
Essayez-le en ligne!
la source
C, 373 octets
Essayez-le en ligne
la source
Langue Wolfram, 389 octets
Plus lisible:
Wolfram a une liste intégrée de codes de pays ISO, donc cela devrait être le langage parfait pour le travail. Cependant, il ne connaît que les codes de pays qui sont en fait les codes de pays, et non ceux réservés à d'autres usages, qui sont toujours inclus dans ce tableau. Nous devons donc ajouter de nombreux codes de pays manuellement.
Explication:
""<>r[r[#," "]&/@Array[CharacterRange["A","Z"][[{##}]]&,{26,26}],n="\n"]
est un tableau de chaînes de toutes les paires de lettres de "A" à "Z".#~c~"CountryCode"&/@c[]
(oùc=CountryData
est défini précédemment) donne une liste de tous les codes de pays que Wolfram Language connaît. Quelques-uns le sontMissing["NotApplicable"]
, donc nous supprimons ceux avecCases[...,_String]
.(""<>#&/@Partition[Characters@"AACP...AXJA",2,1])
crée manuellement 83 des codes de pays restants à l'aide d'une chaîne de 138 caractères, où les paires de caractères adjacents sont les codes de pays requis. Cette chaîne a été trouvée plus ou moins à la main (à l'aide de laFindPostmanTour
fonction!), Et il y a une certaine répétition, donc il y a potentiellement plus de golf à faire ici.StringReplace[ <full array> ,{"GZ"|"WE"->" ",x:("X"~~_~~" "|n)|##&@@( <known country codes> ~Join~ <extra codes> ):>x,Except@n->" "}]
se débarrasse d'abord de deux codes, "GZ" et "WE", que Wolfram pense être des codes de pays mais ne sont pas selon le tableau; correspond ensuite à tous les codes commençant par "X", plus les codes connus et ceux que nous avons ajoutés manuellement, et les remplace par eux-mêmes; puis finalement tout ce qui n'est pas une nouvelle ligne et qui n'a pas déjà été apparié est transformé en espace.la source
Gelée ,
121120112110 octets (non concurrent)Essayez-le en ligne!
-8 octets grâce à @Dennis
-2 octets grâce à l'idée de @ Dennis des produits cartésiens
Comment ça marche
Simple: le programme multiplie une grande liste binaire par une autre grande liste pour obtenir la plupart de la sortie, puis la formate
Moyen: Le programme code la grande liste binaire
en un seul grand nombre, codant les codes de pays attribués. Chaque élément est multiplié par élément par chaque élément de chaque code de pays possible pour obtenir une liste de tous les codes de pays attribués, qui est ensuite formatée en liste de sortie.
Niveau inférieur:
La majeure partie du programme utilise des données encodées en:
Il s'agit d'un entier de base 250 qui contient le nombre décimal
233462323092263584350936137603939798267906095227198731310610883427614237299604158551774020670253062350084519623333781892392013977676150946873601610983221266427394582295973500719992107281184544524840476937
, qui est transformé en la liste binaire ci-dessus.Par souci de concision, appelons cette valeur
c
et remplaçons la longue chaîne parc
dans l'explicationla source
;⁶$€Fs78;⁷$€
peut être remplacé pars26G
.G
remplira les chaînes vides avec des espaces.