Twoim zadaniem jest wydrukować / wydrukować / zwrócić ten tekst:
_____ _____
| 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 \
/_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____/
Zasady:
- Pusta liczba wierszy między dwiema częściami może być dowolną kwotą (w tym 0)
- Każda linia może mieć spacje poprzedzające i dopełniające, o ile dwie części wyglądają poprawnie, a druga część ma wcięcie o co najmniej jedną spację więcej niż pierwsza.
- Możesz mieć dodawanie / dodawanie nowych linii i / lub spacji.
- Nie można używać tabulatorów do odstępów (o ile nie ma interpretera, który poprawnie zamienia je spacjami).
- Z powodu mojego błędu możesz użyć
______ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____
jako pierwszej linii drugiej części.
Dane:
możesz użyć tego tekstu jako odniesienia (ale nie jako danych wejściowych):
Treść: symbol, liczba atomowa, grupa, grupy okresowe 8 i 9 oraz okresy 4-17 są używane w drugiej części.
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
Wbudowane, które podają dowolne informacje o układzie okresowym elementów, są dozwolone, ale powinny być przeglądane oddzielnie od rozwiązań niewbudowanych.
Wygrywa najkrótszy kod na język!
code-golf
kolmogorov-complexity
dzaima
źródło
źródło
Odpowiedzi:
Bubblegum , 535 bajtów
Wykorzystuje kompresję LZMA.
Wypróbuj online!
źródło
Excel VBA,
1024231020990983975595495 bajtówPełna
sub
procedura, która nie pobiera danych wejściowych i wysyła tabelę okresową do zakresu[A1:R10]
naActiveSheet
obiekcie. Zauważ, że ponieważ Excel nie może zaimplementować squiggles na granicach, (o ile mi wiadomo) ta implementacja zamiast tego używa kolorowej czerwonej ramki do wskazania serii lantanowców i aktynowców.-3 Bajty dla białych znaków
-30 Bajtów do zmiany
Range("A1:R10")
na[A1:R10]
, usunięcia spacji ze wszystkicha "some stuff"
połączeń i zmiany ogranicznika z","
na" "
-7 bajtów na zmianę
Range("D6:D7,D9:D10,R9:R10")
na[D6:D7,D9:D10,R9:R10]
-8 Bajtów do zmiany adresu komórki ciągu na
[...]
zawinięte odwołania do komórki-380 Bajtów dzięki @Alexander (usunięto numerację z danych i zamiast tego użyto pętli for)
-100 bajtów do konwersji tablicy
String
i używaniaMid
funkcjiWydajność
źródło
D6:D7
iD9:D10
JavaScript (ES6),
756750 bajtówWyjaśnienie:
a
zawiera (sformatowane) lantanowce i aktynowcej
służy do śledzenia, która postać jest używana do narysowania zygzaka Lantanowców i Aktynowcówi
to po prostu numer następnego elementu do sformatowania. Chociaż formatowanie elementów nie jest absolutnie konieczne, myślę, że w ten sposób oszczędzasz bajt.r
jest funkcją dekodowania długości przebiegu. Oczekuje się, że zostanie wywołany za pomocą parametru ciągu szablonu. Dowolna liczba w ciągu powoduje, że poprzedni znak jest powtarzany wiele razy, np.r`_5`
Jest taki sam jak`_____`
(ale oczywiście o 2 bajty krótszy). Pierwotnie miałem bardziej wyrafinowaną wersję, którą można było obsłużyć,r`${i<100} `+i+r`${i++<10} `
ale okazało się, że jest krótsza, aby zachować ją jako specjalny przypadek.f
jest funkcją formatowania elementów. Oczekuje się, że zostanie wywołany za pomocą parametru ciągu szablonu zawierającego elementy jako pary znaków (spacja uzupełniona nazwami elementów jednoznakowych). Zwracana jest tablica trzech ciągów znaków, jeden dla numerów elementów, jeden dla nazw elementów i jeden dla podkreśleń. Jeśli sformatowany jest więcej niż jeden element, są one łączone|
separatorem.g
jest funkcją klejenia. Oczekuje się, że zostanie wywołany z trzema tablicami (drugi i trzeci parametr mogą być łańcuchami, jeśli potrzebny jest tylko jeden znak) i zwróci pojedynczą tablicę ze wszystkimi odpowiednimi łańcuchami połączonymi razem.Pierwsze trzy rzędy elementów są obsługiwane przez sklejenie sformatowanych elementów z każdej strony odpowiednią ilością miejsca. Czwarty i piąty rząd nie wymagają kleju. Szósty i siódmy rząd są obsługiwane przez przyklejenie sformatowanych elementów z każdej strony odpowiednim zygzakiem. 21 rzędów jest następnie łączonych razem z
|
ramkami i znakami nowej linii. Tymczasem 6 rzędów lantanowców i aktynowców otrzymuje wypełnienie i zygzak i łączy się z nowymi liniami. Na koniec elementy są łączone z niezbędnymi pozostałymi elementami formatowania. Edycja: Zapisałem 6 bajtów, ponieważ zapomniałem zastąpić dosłowne znaki nowej linii po opracowaniu kodu.Jeśli pełny stół z Lantanowcami i Aktynowcami in situ jest dopuszczalny, wówczas dla 556 bajtów:
Objaśnienie: Łańcuch zawiera listę elementów
-
i znak nowej linii dodany jako elementy formatujące. Wiele zamienników służy do przekształcenia listy elementów w żądaną tabelę.|
s.|
s są następnie usuwane.-
s są zastępowane wystarczającym dopełnieniem, aby uzyskać szerokość 193 znaków._
s._
umieszczana nad nią (jeśli jeszcze jej nie ma)_
s są łączone za pomocą_
s.Prawdopodobnie mógłbym zaoszczędzić jeszcze kilka bajtów przy użyciu powszechnie dostępnych metod padStart i padEnd.
źródło
19_84 ``+a.map(s=>r`` 18
na18_84 ``+a.map(s=>r`` 17
. Nie wpływa to na długość kodu.Ruby, 567
Przyprowadzono serię La / Ac bliżej głównej tabeli (ponowne czytanie reguł sugeruje, że jest to dozwolone; zmieniona sekcja formatowania
d
jest używana natychmiast po obliczeniu; a następny wiersz obliczony matematycznie zamiast wyrażenia regularnego.Ruby, 587
Wynik wyklucza 3 niepotrzebne nowe linie dodane dla jasności
Wyjaśnienie
Chodzi o to, aby wykonać następujące czynności, a następnie zmodyfikować je, dodając odpowiednie wypełnienie i formatowanie oraz przesuwając lantanowce i aktynowce na dno.
Skomentowany kod
źródło
a[r+15][18]=a[r+15][102]='\//'[r%2];a[r+23]=' '*18+a[r+15][18,85];a[r+15][18,84]=''
zapisywanie 83 bajtów i być możea[22]=' '*18+?_*84
Z drugiej strony musiałbym wstawić przerwę w wierszach 4 i 5 nad ziemiami rzadkimi, aby był do tego dodatkowy kod. Trudno powiedzieć, jaki byłby wynik bez robienia tego, ale byłby krótszy.C,
141514011395136713451277115910521043 bajtówDzięki @Conor O'Brien za oszczędność 6 bajtów!
Dzięki @ Zacharý za oszczędność
2290 bajtów!Dzięki @gastropner za oszczędność
118225 bajtów!Dzięki @ceilingcat za oszczędność
89 bajtów!Wypróbuj online!
Unrolled (wersja 1159 bajtów):
źródło
printf(
wystąpienia, oto link do twojego kodu z tymi trzema wystąpieniami zastąpionymi przezP
makro: repl.it/Jeat/1#define
-ing;L;B
: repl.it/Jeat/305AB1E ,
517500494459458 bajtówWypróbuj online!
-10ish dzięki Emignie
Wydaje długi gardłowy pisk zwycięstwa ... Będzie grał więcej w golfa, ale ponieważ wciąż jest najkrótszy ...
Podstawowy pomysł
Odwzorowałem każdy z kwadratów, przy czym pierwsza cyfra była długością liczby, a druga cyfra była długością nazwy elementu. Użyłem tego do stworzenia szkieletu (jeśli
.C
i.B
nie istniałby to łatwo byłoby 300-400 bajtów):To właśnie osiąga pierwsza połowa kodu ...
05AB1E , 229 bajtów
Wypróbuj online!
Dzięki brzydkiej jednorazowej manipulacji i innym bzdurom, które nie powinny istnieć, udaje mi się złożyć cały szkielet.
Następna część to w zasadzie „wstaw masywny ciąg liter i cyfr reprezentujących elementy”. Zasadniczo po prostu skompresowałem kolejno wszystkie litery:
Aby uzyskać:
Następnie widzisz, że iteruję zastępując wszystkie symbole @ odpowiednią literą (na końcu, po umieszczeniu ich wszystkich w odpowiednich pozycjach, pozwala mi to na użycie wielkich liter „Case Cased”, ponieważ każdy element jest oddzielony spacją).
Następnie tworzę ciąg liczb i robię to samo (dzięki Emigna):
Prowadzi do:
Które następnie iteruję i zamieniam każdy # na.
Po tym ostatnim rozdrażnieniem były cięcia ... Mój Boże ...
Ten 50-bajtowy potworność jest tym, co chcę naprawić, wraz z wieloma innymi małymi rzeczami ... Więc będę kontynuować grę w golfa i dopóki nie naprawię rzeczy, które chcę, będzie to nieformalne wyjaśnienie.
źródło
0 36
do¾36
.104 118Ÿ
doƵ3ƵHŸ
.90 103Ÿ
do90Ƶ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 bajtów
To podejście nie jest optymalne. Nie można użyć tio, ponieważ to działa
[console]::setcursorposition
.źródło
SOGL V0.11 , 311 bajtów (niekonkurencyjny)
Zajęło to trochę czasu. Aby uczynić to tak kompaktowym, kosztem niekonkurencyjnej odpowiedzi zaimplementowałem wiele rzeczy w SOGL (z których większość została już udokumentowana). W szczególności
- „ž”, który umieszcza tablicę wewnątrz innej tablicy na określonych współrzędnych, oraz
- „►” i „◄” - kodowanie i dekodowanie długości przebiegu. Naprawdę myślałem, że je udokumentowałem, ale chyba nie.
Wypróbuj tutaj! (kompresja (leniwie) zaktualizowana do zgodności z 0.12)
Przed nami zbyt długie wyjaśnienie:
Pierwsza część: konfiguracja
Druga część: pętla
Więc teraz wyjście wygląda jak ten .
Trzecia część: dodatki
źródło
Bash, 728 bajtów
Testowany na Ubuntu , wymaga programów base64 i xz
Wyjaśnienie
LZMA (algorytm łańcuchowy Lempela-Ziv-Markova) wyprodukował archiwum o wielkości około 0,5K z układem okresowym.
Zawiera niezadrukowane symbole i nie można go używać bezpośrednio w konsoli. Aby go użyć, zakodowałem go przez Base64
Przekierowanie strumienia służy do dekodowania i dekompresji archiwum.
Wydziwianie
Aby zaoszczędzić około 30 bajtów, usunąłem znak nowej linii i niektóre spacje
źródło
base64 -D<<Q|xz -d
po którym następuje kod base64 w osobnej linii i końcowe Q).Excel VBA +,
674296293 bajtów (zdecydowanie oszustwo)Zbyt zabawne z nowatorskiego rozwiązania, którego nie można udostępniać.
Łamie tę standardową lukę
Sub
procedura, która nie pobiera danych wejściowych i nie wypuszcza układu okresowego doactivesheet
obiektu; Zakodowane do pracy z 118 elementamiTen układ okresowy obejmuje
Kod
Wydajność
Stara wersja, 674 bajtów
Wydajność
źródło
Balonowej , 600 bajty
Wypróbuj online!
Możesz odwrócić ten zrzut heksowy za pomocą
xxd -r
.Jest to wynik Zopfliingowania tekstu 747 razy w formacie DEFLATE.
źródło
PHP, 758 bajtów
Po bardzo niewielkiej szansie na grę w golfa postanowiłem pracować tylko ze strunami
Wersja online
Rozszerzony
PHP, 892 bajtów
Pierwsze działające rozwiązanie, które jest w liczbie bajtów wersji kompresującej, rozwiązanie z tablicami
Wersja online
PHP, 783 bajtów
Wypróbuj online!
Tylko przy użyciu kompresji
PHP, 948 bajtów
źródło
GW-Basic, 598 bajtów (plik tokenizowany)
Niestety tryb tekstowy GW-Basic jest ograniczony do 80 kolumn. Próbowałem ścisnąć stół, aby go dopasować, ale nie wyglądało to zbyt przyjemnie, więc zamiast tego musiałem użyć trybu graficznego.
Poniżej znajduje się źródło tekstu, z liniami owiniętymi wokół 80 kolumn dla czytelności; uważaj, aby program działał, musi być zapisany na stronie kodowej 437. Jeśli go wypróbujesz, zauważysz, że będzie dużo migotać podczas rysowania. Przepraszam.
GW-Basic nie zapisuje swoich plików tak skutecznie, jak to możliwe, więc aby sprowadzić go do 660 bajtów, musisz otworzyć tokenizowany plik w edytorze i ręcznie usunąć wszystkie spacje oprócz jednego, końca znaku pliku i śmieci postać przed nim. Spowoduje to zmniejszenie jego rozmiaru do 660 bajtów i nadal będzie się ładował i działał dobrze.
Edycja: Ponieważ w tym przypadku nie ma znaczenia, że zmienne są liczbami całkowitymi, ponieważ oczekiwany błąd jest niewielki, a operacje podobne
MOD
i\
okrągłe i tak, możemy równie dobrze zamienić je w zmiennoprzecinkowe, zapisując%
token przy każdej wzmiance. Zauważyłem, że liczba ta35
występuje wystarczająco często, że pięć bajtów potrzebnych do zapisania jej w zmiennej jest (tylko!) Tego warta. Jeśli utrzymujesz wynik, zauważysz, że zapisaliśmy 43 bajty, a system plików się zgadza: mamy do 617 bajtów.Edycja: Poprzez nieznaczną zmianę
S$
mogłem ogolić jeszcze sześć bajtów:(K=0)*64+
stałem sięAND 127
.Edycja: OK, więc przypomniałem sobie, że chciałem zmienić sposób przechowywania pustych obszarów. Ogolił to siedem kolejnych bajtów, cztery
S$
kolejne i trzy kolejne, ponieważGOSUB 3:
został zamieniony na>9
. I poświęciłem trochę wydajności na kolejne dwa bajty.Edycja: Przełamałem barierę 600 bajtów! Jedną rzeczą jest uzyskanie czegoś kompaktowego w języku golfowym, ale inną rzeczą jest zrobienie tego w prawdziwym języku. I jeszcze coś innego, jeśli zarządzasz tym w GW-Basic wszystkich rzeczy.
S$
powiększyłem pięć bajtów, ale zaoszczędziłem dziewięć bajtów, zastępującASC(MID$(...))+I-95
jeI+1
i dodającIF K=1 ... ELSE
on-line1
.źródło
Kotlin ,
168816671664 bajtówPrawdopodobnie znajdź jakieś ulepszenia, aby zaoszczędzić bajty. Ale sprawiłem, że działa, więc publikuję. Dzięki mazzy za 21 bajtów deklarujących u. Jeszcze 3 bajty usuwające ciąg szablonu i używające cię bezpośrednio.
Wypróbuj online!
źródło
val u="_____"
przedfun Int.c()
i 2. zastąp wszystkie występujące 5 podkreślników na $ u. na przykładif((r<2&&c>12)||(r==3&&c>2&&c<12))"_$u"
C (gcc) ,
623611 bajtówWypróbuj online!
Podziękuj gastropnerowi za 2 bajty (i więcej myśli) i cailingcat za 7 bajtów
źródło
e()
makro. Połączyć.s[x/18*3+i<5|E(0)&4/7][x%18*6+i<5|E(0)&4%7]
wydają się nie mieć tego samego znaczeniaBash + openssl + bzcat, 787 bajtów
Nowe linie są wymagane. Zwraca układ okresowy do
stdout
.źródło
openssl enc -d -base64
zbase64 -D
PowerShell, bajty
1077937934906902888878842784688677673667651596 bajtówJavaScript w Port of Neil
Dołącz
rv i,j,a
na końcu skryptu do zdolnegorestart
.Bez golfa
źródło
Siatkówka , 888 bajtów
Wypróbuj online!
źródło
C ++, 866 bajtów
Wersja bez golfa:
Python 3, 730 bajtów
źródło
/// ,
987958 bajtówWypróbuj online!
próbowałem
źródło
Płótno , 289 bajtów
Wypróbuj tutaj!
źródło
Tekst , 3148 bajtów
Uspokój się, to żart.
źródło