Ihre Herausforderung besteht darin, diesen Text auszudrucken / auszugeben / zurückzugeben:
_____ _____
| 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 \
/_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____/
Regeln:
- Die Anzahl der Leerzeilen zwischen den beiden Teilen kann beliebig sein (einschließlich 0).
- Jeder Zeile können Leerzeichen vorangestellt und angehängt werden, solange die beiden Teile korrekt aussehen und der zweite Teil mindestens ein Leerzeichen mehr eingerückt ist als der erste.
- Möglicherweise müssen Zeilenumbrüche und / oder Leerzeichen angehängt / vorangestellt werden.
- Sie dürfen keine Tabulatoren als Abstand verwenden (solange es keinen Interpreter gibt, der sie korrekt durch Leerzeichen ersetzt).
- Aufgrund eines Fehlers von mir können Sie sich dafür entscheiden,
______ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____
die erste Zeile des zweiten Teils zu verwenden.
Daten:
Sie können diesen Text als Referenz verwenden (aber nicht als Eingabe):
Inhalt: Symbol, Ordnungszahl, Gruppe, Periodengruppen 8 & 9 und Perioden 4-17 werden für den zweiten Teil verwendet.
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
Integrierte Elemente, die Informationen zum Periodensystem der Elemente enthalten, sind zulässig, sollten jedoch getrennt von nicht integrierten Lösungen angezeigt werden.
Der kürzeste Code pro Sprache gewinnt!
code-golf
kolmogorov-complexity
dzaima
quelle
quelle
Antworten:
Bubblegum , 535 Bytes
Verwendet LZMA-Komprimierung.
Probieren Sie es online!
quelle
Excel VBA,
1.0231.020990983975595495 BytesVollständige
sub
Routine, die keine Eingabe vornimmt und das Periodensystem auf den Bereich[A1:R10]
desActiveSheet
Objekts ausgibt . Beachten Sie, dass Excel (soweit ich weiß) keine Kringel an den Rändern implementieren kann. Daher wird bei dieser Implementierung stattdessen ein farbiger roter Rand verwendet, um die Lanthanoid- und Actinoid-Reihen anzuzeigen.-3 Bytes für Whitespace
-30 Bytes für das Ändern von
Range("A1:R10")
in[A1:R10]
, das Entfernen von Leerzeichen aus allena "some stuff"
Aufrufen und das Ändern des Begrenzers von","
in" "
-7 Bytes für den Wechsel
Range("D6:D7,D9:D10,R9:R10")
zu[D6:D7,D9:D10,R9:R10]
-8 Bytes für den Wechsel von String-Zellenadressen zu
[...]
umschlossenen Zellenreferenzen-380 Bytes dank @Alexander (Nummerierung aus den Daten entfernt und stattdessen eine for-Schleife verwendet)
-100 Bytes zum Konvertieren von Arrays in
String
und Verwenden vonMid
FunktionenAusgabe
quelle
D6:D7
undD9:D10
JavaScript (ES6),
756 bis750 ByteErläuterung:
a
enthält die (formatierten) Lanthaniden und Actinidenj
wird verwendet, um zu verfolgen, welches Zeichen verwendet wird, um den Zickzack der Lanthaniden und Actiniden zu zeichneni
ist einfach die Nummer des nächsten zu formatierenden Elements. Obwohl es nicht unbedingt erforderlich ist, die Elemente in der richtigen Reihenfolge zu formatieren, spart dies meiner Meinung nach ein kleines Byte.r
ist eine Lauflängendecodierungsfunktion. Es wird erwartet, dass es mit einem Template-String-Parameter aufgerufen wird. Durch eine beliebige Zahl in der Zeichenfolge wird das vorangegangene Zeichen so oft wiederholt, z. B.r`_5`
wie`_____`
(aber natürlich 2 Byte kürzer). Ich hatte ursprünglich eine anspruchsvollere Version, die damit umgehen konnte,r`${i<100} `+i+r`${i++<10} `
aber es stellte sich heraus, dass sie kürzer war, um das als Sonderfall zu halten.f
ist eine Elementformatierungsfunktion. Es wird erwartet, dass der Aufruf mit einem Template-String-Parameter erfolgt, der die Elemente als Zeichenpaare enthält (Leerzeichen für Namen von Einzelzeichenelementen). Es wird ein Array mit drei Zeichenfolgen zurückgegeben, eine für die Elementnummern, eine für die Elementnamen und eine für die Unterstreichungen. Wenn mehr als ein Element formatiert ist, werden sie mit einem|
Trennzeichen verbunden.g
ist eine Klebefunktion. Es erwartet, dass es mit drei Arrays aufgerufen wird (der zweite und dritte Parameter können Zeichenfolgen sein, wenn nur ein Zeichen benötigt wird) und gibt ein einzelnes Array mit allen entsprechenden Zeichenfolgen zurück, die zusammen verkettet sind.Die ersten drei Elementreihen werden behandelt, indem die formatierten Elemente von jeder Seite mit einer angemessenen Menge an Platz geklebt werden. Die vierte und fünfte Reihe benötigen keinen Klebstoff. Die sechste und siebte Reihe werden durch Kleben der formatierten Elemente von jeder Seite mit dem entsprechenden Zickzack behandelt. Die 21 Reihen werden dann mit Rahmen
|
und Zeilenumbrüchen zusammengefügt. Währenddessen erhalten die 6 Reihen der Lanthaniden und Actiniden ihre Polsterung und ihren Zickzack und werden mit Zeilenumbrüchen zusammengefügt. Zum Schluss werden die Stücke mit den notwendigen restlichen Formatierungselementen verkettet. Bearbeiten: 6 Bytes gespart, weil ich vergessen habe, nach der Entwicklung des Codes wörtliche Zeilenumbrüche zu ersetzen.Wenn eine vollständige Tabelle mit den Lanthanoiden und Actinoiden in situ akzeptabel ist, dann für 556 Bytes:
Erläuterung: Eine Zeichenfolge enthält die Liste der Elemente,
-
denen als Formatierungselemente ein Zeilenumbruch hinzugefügt wurde. Eine Reihe von Ersetzungen wird verwendet, um die Liste der Elemente in die gewünschte Tabelle umzuwandeln.|
s aufgefüllt .|
s werden dann gelöscht.-
s werden durch genügend Abstand ersetzt, um eine Breite von 193 Zeichen zu erhalten._
s ersetzt wurden._
gesetzt (falls sie noch nicht vorhanden ist)_
s werden mit_
s verbunden.Mit den weit verbreiteten Methoden padStart und padEnd könnte ich wahrscheinlich noch ein paar Bytes einsparen.
quelle
19_84 ``+a.map(s=>r`` 18
zu18_84 ``+a.map(s=>r`` 17
. Dies hat keinen Einfluss auf die Codelänge.Ruby, 567
Brachte die La / Ac-Reihe näher an die Haupttabelle (das erneute Lesen der Regeln legt nahe, dass dies zulässig ist; der neu angeordnete Formatierungsabschnitt
d
wird sofort verwendet, wenn er berechnet wird; und die nächste Zeile wird mathematisch anstelle von Regex berechnet.Ruby, 587
Punktzahl schließt 3 unnötige Zeilenumbrüche aus Gründen der Übersichtlichkeit aus
Erläuterung
Die Idee ist, das Folgende zu produzieren, es dann zu modifizieren, indem die richtige Polsterung und Formatierung hinzugefügt und die Lanthaniden und Actiniden nach unten verschoben werden.
Kommentierter Code
quelle
a[r+15][18]=a[r+15][102]='\//'[r%2];a[r+23]=' '*18+a[r+15][18,85];a[r+15][18,84]=''
speichernde 83 Bytes löschen , und möglicherweisea[22]=' '*18+?_*84
andererseits müsste ich eine Lücke in den Reihen 4 und 5 über den seltenen Erden setzen, also würde es zusätzlichen Code für das geben. Es ist schwierig zu sagen, wie hoch die Punktzahl wäre, ohne dies zu tun, aber es wäre kürzer.C,
141514011395136713451277115910521043 BytesVielen Dank an @Conor O'Brien für die Einsparung von 6 Bytes!
Vielen Dank an @ Zacharý für das Speichern von
2290 Bytes!Vielen Dank an @gastropner für das Speichern von
118225 Bytes!Vielen Dank an @ceilingcat für das Speichern von
8 bis9 Bytes!Probieren Sie es online!
Entrollt (1159-Byte-Version):
quelle
printf(
Vorkommen vergessen . Hier ist ein Link zu Ihrem Code, wobei diese drei Vorkommen durch dasP
Makro ersetzt wurden: repl.it/Jeat/1#define
-ing rasiert werden;L;B
: repl.it/Jeat/305AB1E ,
517500494459458 BytesProbieren Sie es online!
-10ish danke an Emigna
Lässt einen langen gutturalen Sieg kreischen ... Wird mehr golfen, aber da es immer noch der kürzeste ist ...
Die Grundidee
Ich habe jedes der Quadrate kartiert, wobei die erste Ziffer die Länge der Zahl und die zweite Ziffer die Länge des Elementnamens ist. Verwendet , um dies das Skelett zu erstellen (wenn
.C
und.B
dies nicht leicht 300-400 Bytes vorhanden wäre):Dies ist, was die erste Hälfte des Codes erreicht ...
05AB1E , 229 Bytes
Probieren Sie es online!
Durch hässliche, einmalige Manipulationen und anderen Quatsch, der nicht existieren sollte, schaffe ich es, das gesamte Skelett zusammenzufügen.
Der nächste Teil besteht im Wesentlichen darin, "die massive Folge von Buchstaben und Zahlen einzufügen, die die Elemente darstellen". Ich habe im Wesentlichen alle Buchstaben nacheinander komprimiert:
Bekommen:
Sie sehen dann, wie ich alle @ -Symbole durch den entsprechenden Buchstaben ersetze (am Ende kann ich "Titel in Großbuchstaben" für die Großbuchstaben verwenden, da jedes Element durch Leerzeichen getrennt ist).
Als nächstes mache ich die Zahlenfolge und mache dasselbe (danke Emigna):
Ergebnisse in:
Was ich dann iteriere und durch jedes # ersetze.
Danach war der letzte Ärger die Schrägstriche ... Mein Gott ...
Diese 50-Byte-Monstrosität möchte ich zusammen mit vielen anderen kleinen Dingen beheben. Also werde ich weiter Golf spielen, und bis ich die gewünschten Dinge behoben habe, wird dies die informelle Erklärung sein.
quelle
0 36
zu¾36
.104 118Ÿ
zuƵ3ƵHŸ
.90 103Ÿ
zu90Ƶ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 Byte
Dieser Ansatz ist nicht optimal. Ich kann tio nicht verwenden, da dies Vorteile bringt
[console]::setcursorposition
.quelle
SOGL V0.11 , 311 Bytes (nicht konkurrierend)
Das hat eine Weile gedauert. Um dies so kompakt zu gestalten, habe ich mit den Kosten einer nicht konkurrierenden Antwort viele Dinge in SOGL implementiert (von denen die meisten bereits dokumentiert waren). Vor allem
- "ž", das ein Array innerhalb eines anderen Arrays an bestimmten Koordinaten platziert, und
- "►" und "◄" - Lauflängencodierung und -decodierung. Ich dachte wirklich, ich hätte sie dokumentiert, aber ich glaube, ich hatte es nicht getan.
Probieren Sie es hier aus! (Komprimierung (träge) aktualisiert, um 0.12 zu erfüllen)
Also, zu lange Erklärung voraus:
Erster Teil: Setup
Zweiter Teil: Schleife
Die Ausgabe sieht nun so aus .
Dritter Teil: Add-Ons
quelle
Bash, 728 Bytes
Getestet unter Ubuntu , erfordert Base64- und XZ- Programme
Erläuterung
LZMA (Lempel-Ziv-Markov-Ketten-Algorithmus) erzeugte ca. 0,5K Archiv mit Periodensystem.
Es enthält nicht druckbare Symbole und kann nicht direkt in der Konsole verwendet werden. Um es zu benutzen, habe ich es mit Base64 codiert
Die Stream-Umleitung wird zum Dekodieren und Dekomprimieren von Archiven verwendet.
Tricks
Um etwa 30 Bytes zu sparen, habe ich Zeilenumbruch und einige Leerzeichen gelöscht
quelle
base64 -D<<Q|xz -d
gefolgt vom Base64-Code in einer eigenen Zeile und einem nachgestellten Q).Excel VBA +,
674296293 Bytes (definitiv betrügen)Zu lustig von einer neuartigen Lösung, um sie nicht zu teilen.
Bricht diese Standardlücke
Sub
Routine, die keine Eingabe annimmt und das Periodensystem an dasactivesheet
Objekt ausgibt ; Hartcodiert für 118 ElementeDieses Periodensystem enthält
Code
Ausgabe
Alte Version, 674 Bytes
Ausgabe
quelle
Bubblegum , 600 Bytes
Probieren Sie es online!
Sie können diesen Hexdump mit umkehren
xxd -r
.Dies ist das Ergebnis des 747-fachen Zopflierens des Texts im DEFLATE-Format.
quelle
PHP, 758 Bytes
Nachdem ich nur sehr wenig Gelegenheit hatte, meinen Array-Ansatz zu verbessern, entscheide ich mich, nur mit Saiten zu arbeiten
Online Version
Erweitert
PHP, 892 Bytes
Erste funktionierende Lösung, die unter der Byteanzahl der Komprimierungsversion liegt, ist eine Lösung mit Arrays
Online Version
PHP, 783 Bytes
Probieren Sie es online!
Nur mit Komprimierung
PHP, 948 Bytes
quelle
GW-Basic, 598 Bytes (Token-Datei)
Leider ist der Textmodus von GW-Basic auf 80 Spalten beschränkt. Ich habe versucht, den Tisch zu zerquetschen, um ihn fit zu machen, aber das sah nicht allzu erfreulich aus, sodass ich stattdessen einen Grafikmodus verwenden musste.
Unten finden Sie die Textquelle mit Zeilen, die zur besseren Lesbarkeit in 80 Spalten umbrochen sind. Darauf achten , dass für das Programm zu arbeiten , um es in Codepage 437. Sollten Sie es gerettet werden müssen ausprobieren, werden Sie feststellen , es flackert viel , während es zeichnen. Es tut uns leid.
GW-Basic speichert seine Dateien nicht so effizient wie möglich. Um sie auf 660 Byte zu reduzieren, müssen Sie die Token-Datei in einem Editor öffnen und alle Leerzeichen bis auf eines, das Dateiendezeichen und den Müll manuell entfernen Zeichen davor. Dadurch wird die Größe auf 660 Byte reduziert und es wird immer noch geladen und funktioniert einwandfrei.
Bearbeiten: Da es in diesem Fall keine Rolle spielt, dass die Variablen Ganzzahlen sind, da der erwartete Fehler klein ist und Operationen sowieso ähnlich
MOD
und\
rund sind, können wir sie auch in Gleitkommavariablen%
umwandeln und bei jeder Erwähnung ein Token speichern . Und mir ist aufgefallen, dass die Zahl35
oft genug vorkommt, sodass sich die fünf Bytes, die zum Speichern in einer Variablen erforderlich sind, (nur!) Lohnen. Wenn Sie Punkte gesammelt haben, haben Sie bemerkt, dass wir 43 Bytes gespeichert haben, und das Dateisystem stimmt zu: Wir haben nur noch 617 Bytes.Edit: Durch leichte Veränderung konnte
S$
ich sechs weitere Bytes abschneiden:(K=0)*64+
wurdenAND 127
.Bearbeiten: Okay, also erinnere ich mich, dass ich die Art und Weise ändern wollte, in der ich leere Bereiche speichere. Das hat sieben weitere Bytes, vier
S$
und drei mehrGOSUB 3:
weggenommen, weil es gegen ausgetauscht wurde>9
. Und ich habe etwas Effizienz für weitere zwei Bytes geopfert.Edit: Ich habe die 600-Byte-Barriere durchbrochen! Es ist eine Sache, etwas Kompaktes in einer Golfsprache zu lernen, aber eine andere, es in einer realen Sprache zu tun. Und noch etwas ganz anderes, wenn man es ausgerechnet in GW-Basic schafft.
S$
bekam fünf Bytes größer, aber ich gerettet neun Bytes durch den AustauschASC(MID$(...))+I-95
mitI+1
und das HinzufügenIF K=1 ... ELSE
der Linie1
.quelle
Kotlin ,
168816671664 BytesFinden Sie wahrscheinlich einige Verbesserungen, um Bytes zu sparen. Aber es funktioniert, also poste ich es. Danke, mazzy, für 21 Bytes, die dich deklarieren. 3 weitere Bytes entfernen den Template-String und verwenden u direkt.
Probieren Sie es online!
quelle
val u="_____"
Vorfun Int.c()
und 2. Alle 5 Unterstriche auf $ u ersetzt werden. Zum Beispielif((r<2&&c>12)||(r==3&&c>2&&c<12))"_$u"
C (gcc) ,
623611BytesProbieren Sie es online!
Danke gastropner für 2 Bytes (und mehr der Gedanke) und cailingcat für 7 Bytes
quelle
e()
Makro erweitern. Verknüpfung.s[x/18*3+i<5|E(0)&4/7][x%18*6+i<5|E(0)&4%7]
scheinen nicht die gleiche Bedeutung habenBash + openssl + bzcat, 787 Bytes
Die Zeilenumbrüche sind erforderlich. Gibt das Periodensystem an aus
stdout
.quelle
openssl enc -d -base64
mitbase64 -D
Powershell, Bytes
1077937934906902888878842784688677673667651596 BytesPort von Neil's Javascript
Hänge
rv i,j,a
an das Ende des Skripts an könnenrestart
.Ungolfed
quelle
Netzhaut , 888 Bytes
Probieren Sie es online!
quelle
C ++, 866 Bytes
Ungolfed-Version:
Python 3, 730 Bytes
quelle
/// ,
987958 BytesProbieren Sie es online!
Ich habe es versucht
quelle
Canvas , 289 Bytes
Probieren Sie es hier aus!
quelle
Text , 3148 Bytes
Beruhige dich, es ist ein Witz.
quelle