Votre défi consiste à imprimer / produire / retourner ce texte:
_____ _____
| 1 | | 2 |
| H | | He |
|_____|_____ _____________________________|_____|
| 3 | 4 | | 5 | 6 | 7 | 8 | 9 | 10 |
| Li | Be | | B | C | N | O | F | Ne |
|_____|_____| |_____|_____|_____|_____|_____|_____|
| 11 | 12 | | 13 | 14 | 15 | 16 | 17 | 18 |
| Na | Mg | | Al | Si | P | S | Cl | Ar |
|_____|_____|___________________________________________________________|_____|_____|_____|_____|_____|_____|
| 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |
| K | Ca | Sc | Ti | V | Cr | Mn | Fe | Co | Ni | Cu | Zn | Ga | Ge | As | Se | Br | Kr |
|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
| 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 |
| Rb | Sr | Y | Zr | Nb | Mo | Tc | Ru | Rh | Pd | Ag | Cd | In | Sn | Sb | Te | I | Xe |
|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
| 55 | 56 | 57 \ 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 |
| Cs | Ba | La / Hf | Ta | W | Re | Os | Ir | Pt | Au | Hg | Tl | Pb | Bi | Po | At | Rn |
|_____|_____|_____\_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
| 87 | 88 | 89 / 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 |
| Fr | Ra | Ac \ Rf | Db | Sg | Bh | Hs | Mt | Ds | Rg | Cn | Nh | Fl | Mc | Lv | Ts | Og |
|_____|_____|_____/_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
____________________________________________________________________________________
\ 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 \
/ Ce | Pr | Nd | Pm | Sm | Eu | Gd | Tb | Dy | Ho | Er | Tm | Yb | Lu /
\_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____\
/ 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 /
\ Th | Pa | U | Np | Pu | Am | Cm | Bk | Cf | Es | Fm | Md | No | Lr \
/_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____/
Règles:
- Le nombre de lignes vides entre les deux parties peut être n’importe quel montant (y compris 0)
- Chaque ligne peut avoir des espaces avant et après l'ajout tant que les deux parties ont une apparence correcte et que la seconde partie est indentée d'au moins un espace de plus que la première.
- Vous pouvez avoir des nouvelles lignes et / ou des espaces ajoutés / précurseurs.
- Vous ne pouvez pas utiliser des tabulations pour l'espacement (tant qu'il n'y a pas d'interprète qui les remplace correctement par des espaces).
- À cause d'une erreur de ma part, vous pouvez choisir d'utiliser
______ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____
la 1ère ligne de la deuxième partie.
Les données:
vous pouvez utiliser ce texte comme référence (mais pas comme entrée):
Contenu: le symbole, le numéro atomique, le groupe, les groupes de périodes 8 et 9 et les périodes 4 à 17 sont utilisés pour la deuxième partie.
H 1 1 1
He 2 18 1
Li 3 1 2
Be 4 2 2
B 5 13 2
C 6 14 2
N 7 15 2
O 8 16 2
F 9 17 2
Ne 10 18 2
Na 11 1 3
Mg 12 2 3
Al 13 13 3
Si 14 14 3
P 15 15 3
S 16 16 3
Cl 17 17 3
Ar 18 18 3
K 19 1 4
Ca 20 2 4
Sc 21 3 4
Ti 22 4 4
V 23 5 4
Cr 24 6 4
Mn 25 7 4
Fe 26 8 4
Co 27 9 4
Ni 28 10 4
Cu 29 11 4
Zn 30 12 4
Ga 31 13 4
Ge 32 14 4
As 33 15 4
Se 34 16 4
Br 35 17 4
Kr 36 18 4
Rb 37 1 5
Sr 38 2 5
Y 39 3 5
Zr 40 4 5
Nb 41 5 5
Mo 42 6 5
Tc 43 7 5
Ru 44 8 5
Rh 45 9 5
Pd 46 10 5
Ag 47 11 5
Cd 48 12 5
In 49 13 5
Sn 50 14 5
Sb 51 15 5
Te 52 16 5
I 53 17 5
Xe 54 18 5
Cs 55 1 6
Ba 56 2 6
La 57 3 6
Hf 72 4 6
Ta 73 5 6
W 74 6 6
Re 75 7 6
Os 76 8 6
Ir 77 9 6
Pt 78 10 6
Au 79 11 6
Hg 80 12 6
Tl 81 13 6
Pb 82 14 6
Bi 83 15 6
Po 84 16 6
At 85 17 6
Rn 86 18 6
Fr 87 1 7
Ra 88 2 7
Ac 89 3 7
Rf 104 4 7
Db 105 5 7
Sg 106 6 7
Bh 107 7 7
Hs 108 8 7
Mt 109 9 7
Ds 110 10 7
Rg 111 11 7
Cn 112 12 7
Nh 113 13 7
Fl 114 14 7
Mc 115 15 7
Lv 116 16 7
Ts 117 17 7
Og 118 18 7
Ce 58 4 8
Pr 59 5 8
Nd 60 6 8
Pm 61 7 8
Sm 62 8 8
Eu 63 9 8
Gd 64 10 8
Tb 65 11 8
Dy 66 12 8
Ho 67 13 8
Er 68 14 8
Tm 69 15 8
Yb 70 16 8
Lu 71 17 8
Th 90 4 9
Pa 91 5 9
U 92 6 9
Np 93 7 9
Pu 94 8 9
Am 95 9 9
Cm 96 10 9
Bk 97 11 9
Cf 98 12 9
Es 99 13 9
Fm 100 14 9
Md 101 15 9
No 102 16 9
Lr 103 17 9
Les éléments intégrés donnant des informations sur le tableau périodique des éléments sont autorisés mais doivent être visualisés séparément des solutions non intégrées.
Le code le plus court par langue gagne!
Réponses:
Bubblegum , 535 octets
Utilise la compression LZMA.
Essayez-le en ligne!
la source
Excel VBA,
1 0231 020990983975595495 octetssub
Routine complète sans entrée et sortie du tableau périodique dans la plage[A1:R10]
de l'ActiveSheet
objet. Notez qu'étant donné qu'Excel ne peut pas implémenter de gribouillis sur les bordures, cette implémentation utilise (pour autant que je sache) une bordure rouge colorée pour indiquer les séries de lanthanides et d'actinides.-3 octets pour les espaces
-30 octets pour passer
Range("A1:R10")
à[A1:R10]
, supprimer les espaces de tous lesa "some stuff"
appels et changer le délimiteur de","
à" "
-7 octets pour passer
Range("D6:D7,D9:D10,R9:R10")
à[D6:D7,D9:D10,R9:R10]
-8 octets permettant de passer des adresses de cellules String aux
[...]
références de cellules encapsulées-380 octets grâce à @Alexander (suppression de la numérotation dans les données et utilisation d'une boucle for à la place)
-100 octets pour convertir un tableau
String
enMid
fonction et l'utiliserSortie
la source
D6:D7
etD9:D10
JavaScript (ES6),
756750 octetsExplication:
a
contient les lanthanides et les actinides (formatés)j
est utilisé pour suivre quel personnage est utilisé pour dessiner le zigzag des Lanthanides et des Actinidesi
est simplement le numéro du prochain élément à formater. Bien qu'il ne soit pas strictement nécessaire de formater les éléments dans l'ordre, je pense que cela permet de gagner un petit octet.r
est une fonction de décodage de durée d'exécution. Il s'attend à être appelé à l'aide d'un paramètre de chaîne de modèle. Chaque chiffre de la chaîne entraîne la répétition du caractère précédent plusieurs fois, par exemple, ilr`_5`
est identique à`_____`
(mais 2 octets plus court bien sûr). J'avais à l'origine une version plus sophistiquée que je pouvais prendre en charge,r`${i<100} `+i+r`${i++<10} `
mais elle s'est avérée plus courte pour que cela reste un cas particulier.f
est une fonction de formatage d'élément. Il s'attend à être appelé à l'aide d'un paramètre de modèle de chaîne contenant les éléments sous forme de paires de caractères (espace complété pour les noms d'éléments à caractère unique). Un tableau de trois chaînes est renvoyé, un pour les numéros d'élément, un pour les noms d'élément et un pour les soulignés. Si plusieurs éléments sont formatés, ils sont joints à un|
séparateur.g
est une fonction de colle. Il s'attend à être appelé avec trois tableaux (les deuxième et troisième paramètres peuvent être des chaînes si un seul caractère est requis) et renvoie un tableau unique avec toutes les chaînes correspondantes concaténées.Les trois premières rangées d’éléments sont traitées en collant les éléments formatés de chaque côté avec une quantité d’espace appropriée. Les quatrième et cinquième rangées n'ont pas besoin de colle. Les sixième et septième rangées sont traitées en collant les éléments formatés de chaque côté avec le zigzag approprié. Les 21 lignes sont ensuite jointes avec les
|
bordures et les nouvelles lignes. Pendant ce temps, les 6 rangées de Lanthanides et d'Actinides reçoivent leur rembourrage et leur zigzag et sont reliées par de nouvelles lignes. Enfin, les éléments sont concaténés avec les éléments de mise en forme restants nécessaires. Edit: Sauvegardé 6 octets parce que j'ai oublié de remplacer les sauts de ligne littéraux après avoir développé le code.Si une table complète avec les Lanthanides et les Actinides in situ est acceptable, alors pour 556 octets:
Explication: Une chaîne contient la liste des éléments avec
-
et la nouvelle ligne ajoutés en tant qu'éléments de formatage. Un certain nombre de remplacements sont utilisés pour transformer la liste des éléments dans la table souhaitée.|
s.|
sont ensuite supprimés.-
Les s sont remplacés par suffisamment de remplissage pour donner une largeur de 193 caractères._
s._
placé au dessus de lui (s'il ne les a pas déjà)_
s séparés par des espaces sont joints à_
s.Je pourrais probablement économiser quelques octets supplémentaires en utilisant les méthodes largement disponibles padStart et padEnd.
la source
19_84 ``+a.map(s=>r`` 18
par18_84 ``+a.map(s=>r`` 17
. Cela n'affecte pas la longueur du code.Ruby, 567
Rapprochement de la série La / Ac de la table principale (une nouvelle lecture des règles suggère que cela est autorisé; la section de formatage modifiée
d
est utilisée immédiatement, et la ligne suivante est calculée mathématiquement plutôt que par regex.Ruby, 587
le score exclut 3 nouvelles lignes inutiles ajoutées pour plus de clarté
Explication
L'idée est de produire ce qui suit, puis de le modifier en ajoutant le remplissage et le formatage appropriés et en déplaçant les lanthanides et les actinides vers le bas.
Code commenté
la source
a[r+15][18]=a[r+15][102]='\//'[r%2];a[r+23]=' '*18+a[r+15][18,85];a[r+15][18,84]=''
83 octets de sauvegarde et peut-être, d'a[22]=' '*18+?_*84
autre part, je devrais mettre un espace dans les rangées 4 et 5 au-dessus des terres rares afin d'obtenir un code supplémentaire pour cela. Il est difficile de dire quel serait le score sans le faire, mais ce serait plus court.C,
141514011395136713451277115910521043 octetsMerci à @Conor O'Brien d'avoir sauvé 6 octets!
Merci à @ Zacharý pour avoir économisé
2290 octets!Merci à @gastropner pour avoir économisé
118225 octets!Merci à @ceilingcat pour la sauvegarde de
8 à9 octets!Essayez-le en ligne!
Déroulé (version de 1159 octets):
la source
printf(
occurrences, voici un lien vers votre code avec ces trois occurrences remplacées par laP
macro: repl.it/Jeat/1#define
-ment;L;B
: repl.it/Jeat/305AB1E ,
517500494459458 octetsEssayez-le en ligne!
-10ish grâce à Emigna
Laisse échapper un long cri de victoire gutturale ... Je jouerai plus au golf, mais comme c'est toujours le plus court ...
L'idée de base
J'ai cartographié chacun des carrés avec le premier chiffre correspondant à la longueur du nombre et le second chiffre à la longueur du nom de l'élément. Utilisé pour créer le squelette (si
.C
et.B
n’existait pas, ce serait facilement 300-400 octets):C'est ce que la première moitié du code accomplit ...
05AB1E , 229 octets
Essayez-le en ligne!
À travers de vilaines manipulations ponctuelles et d'autres conneries qui ne devraient pas exister, je parviens à reconstituer tout le squelette.
La partie suivante est essentiellement "insère la chaîne massive de lettres et de chiffres représentant les éléments". Je viens essentiellement de compresser, séquentiellement, toutes les lettres:
Obtenir:
Vous me voyez alors itérer en remplaçant tous les symboles @ par la lettre appropriée (à la fin, après les avoir tous placés dans les positions appropriées, cela me permet d'utiliser "Title Cased" pour les majuscules, chaque élément étant séparé par des espaces).
Ensuite, je fais la chaîne numérique et fais la même chose (merci Emigna):
Résulte en:
Ce que je puis itérer et remplace chaque # avec.
Après cela, le dernier ennui était les barres obliques ... Mon dieu ...
Cette monstruosité de 50 octets est ce que je veux corriger, ainsi que de nombreuses autres petites choses ... Je vais donc continuer à jouer au golf, et jusqu'à ce que je répare ce que je veux, ce sera l'explication informelle.
la source
0 36
à¾36
.104 118Ÿ
àƵ3ƵHŸ
.90 103Ÿ
à90Ƶ2Ÿ
.žn•2ƒj#GÂjηCóÛƒüq™ôD ‡yΣ›aÎý1õçñ}ÂćÕ%…7¬vù~GÈž£_DвÌi¸7âòÜë8{~å≠’ˆ—d*^ݬ©Úì#Ï»cDYyÍæηмm¾/5ä):Ω8+“j¼[)ÿ—θ7I₆н¦ʒâÒ₂иofÞIa¥©ÂÛé/VÖt[¼m¦mćó,≠+ŒtC?8@Ú¬¼½k]αεßÁ'‡≠=aÔºø•51вè
.57L72 89Ÿ«Ƶ3ƵHŸ«58 71Ÿ«90Ƶ2Ÿ«J
PowerShell , 1562 octets
Cette approche n'est pas optimale. Vous ne pouvez pas utiliser tio car cela tire parti
[console]::setcursorposition
.la source
SOGL V0.11 , 311 octets (non concurrents)
Cela a pris du temps. Pour rendre cela aussi compact, j'ai, avec le coût d'une réponse non concurrente, implémenté de nombreuses choses dans SOGL (dont la plupart étaient déjà documentées). Plus particulièrement,
- "ž", qui place un tableau dans un autre tableau à des coordonnées spécifiques, et
- "►" et "◄" - codent et décodent en longueur. Je pensais vraiment les avoir documentés, mais je suppose que non.
Essayez-le ici!(compression (paresseusement) mis à jour pour se conformer à 0.12)
Donc, trop longue explication à venir:
Première partie: configuration
Deuxième partie: boucle
Alors maintenant, la sortie ressemble à ceci .
Troisième partie: Add-ons
la source
Bash, 728 octets
Testé sur Ubuntu , nécessite base64 et xz programmes
Explication
LZMA (chaîne-algorithme de Lempel-Ziv-Markov) a produit environ 0,5K d’archives avec tableau périodique.
Il contient des symboles non imprimables et ne peut pas être utilisé directement dans la console. Pour l'utiliser, je l'ai encodé en Base64
La redirection de flux est utilisée pour décoder et décompresser une archive.
Des trucs
Pour économiser environ 30 octets, j'ai supprimé le saut de ligne et certains espaces
la source
base64 -D<<Q|xz -d
suivi du code base64 sur sa propre ligne et d'un Q final).Excel VBA +,
674296293 octets (définitivement tricherie)Trop amusant d'une nouvelle solution à ne pas partager.
Brise cette échappatoire standard
Sub
routine qui ne prend aucune entrée et envoie le tableau périodique à l'activesheet
objet; Codé en dur pour fonctionner avec 118 élémentsCe tableau périodique comprend
Code
Sortie
Ancienne version, 674 octets
Sortie
la source
Bubblegum , 600 octets
Essayez-le en ligne!
Vous pouvez inverser cet hexdump avec
xxd -r
.Ceci est le résultat de la modification du texte 747 fois au format DEFLATE.
la source
PHP, 758 octets
Après avoir très peu de chance de jouer mon approche du tableau, je décide de travailler uniquement avec des cordes.
Version en ligne
Étendu
PHP, 892 octets
Première solution de travail sous le nombre d'octets de la version compressée, une solution avec des tableaux
Version en ligne
PHP, 783 octets
Essayez-le en ligne!
En utilisant uniquement la compression
PHP, 948 octets
la source
GW-Basic, 598 octets (fichier à jeton)
Malheureusement, le mode texte de GW-Basic est limité à 80 colonnes. J'ai essayé d'écraser la table pour l'adapter, mais cela ne semblait pas très plaisant et j'ai donc dû utiliser un mode graphique.
Vous trouverez ci-dessous la source du texte, avec des lignes entourées de 80 colonnes pour plus de lisibilité; Assurez-vous que pour que le programme fonctionne, il doit être enregistré dans la page de code 437. Si vous l'essayez, vous verrez qu'il clignotera beaucoup pendant le dessin. Désolé.
GW-Basic n'enregistre pas ses fichiers aussi efficacement qu'il le pourrait. Par conséquent, pour le réduire à 660 octets, vous devez ouvrir le fichier à jeton dans un éditeur et supprimer manuellement tous les espaces sauf un, le caractère de fin du fichier et le déchet. caractère devant elle. Cela réduira sa taille à 660 octets et continuera à se charger et à fonctionner correctement.
Edit: Puisque dans ce cas, peu importe que les variables soient des entiers, car l’erreur attendue est petite et que les opérations sont semblables à
MOD
et\
arrondies, nous pourrions également les transformer en variables à virgule flottante, en enregistrant un%
jeton à chaque mention. Et j'ai remarqué que le nombre35
se produit assez souvent pour que les cinq octets nécessaires à sa sauvegarde dans une variable en valent la peine (juste!). Si vous avez gardé le score, vous aurez remarqué que nous avons enregistré 43 octets et que le système de fichiers est d’accord: nous sommes parvenus à 617 octets.Edit: En changeant légèrement,
S$
j'ai pu supprimer six octets supplémentaires:(K=0)*64+
est devenuAND 127
.Edit: OK, je me suis donc rappelé que je voulais changer la façon dont je stocke les zones vides. Cela a supprimé sept autres octets, quatre dans
S$
et trois de plus, car ils ontGOSUB 3:
été échangés>9
. Et j'ai sacrifié une certaine efficacité pour deux autres octets.Edit: J'ai franchi la barrière de 600 octets! C'est une chose d'obtenir quelque chose de compact dans une langue de golf, mais une autre chose de le faire dans une langue du monde réel. Et encore une autre chose si vous le gérez dans GW-Basic de toutes choses.
S$
a cinq octets plus gros, mais j’ai économisé neuf octets en les remplaçantASC(MID$(...))+I-95
parI+1
et en les ajoutantIF K=1 ... ELSE
en ligne1
.la source
Kotlin ,
168816671664 octetsProbablement trouver des améliorations pour économiser des octets. Mais, ça marche donc je le poste. Merci mazzy pour 21 octets déclarant u. 3 octets supplémentaires en supprimant la chaîne de modèle et en utilisant u directement.
Essayez-le en ligne!
la source
val u="_____"
avantfun Int.c()
et 2. remplacez toutes les occurrences de 5 traits de soulignement sur $ u. par exempleif((r<2&&c>12)||(r==3&&c>2&&c<12))"_$u"
C (gcc) ,
623611 octetsEssayez-le en ligne!
Merci gastropner pour 2 octets (et plus la pensée) et cailingcat pour 7 octets
la source
e()
macro. Lien.s[x/18*3+i<5|E(0)&4/7][x%18*6+i<5|E(0)&4%7]
semble ne pas avoir le même sensBash + openssl + bzcat, 787 octets
Les nouvelles lignes sont obligatoires. Sort le tableau périodique en
stdout
.la source
openssl enc -d -base64
parbase64 -D
Powershell, octets
1077937934906902888878842784688677673667651596 octetsPort de Neil's Javascript
Ajouter
rv i,j,a
à la fin du script pour pouvoirrestart
.Ungolfed
la source
Retina , 888 octets
Essayez-le en ligne!
la source
C ++, 866 octets
Version non-golfée:
Python 3, 730 octets
la source
/// ,
987958 octetsEssayez-le en ligne!
j'ai essayé
la source
Toile , 289 octets
Essayez-le ici!
la source
Texte , 3148 octets
Calme-toi, c'est une blague.
la source