Ваша задача - распечатать / вывести / вернуть этот текст:
_____ _____
| 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 \
/_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____/
Правила:
- Количество пустых строк между двумя частями может быть любым (включая 0)
- Каждая строка может иметь пробелы в начале и в конце, если две части выглядят правильно, а вторая часть имеет отступ по крайней мере на один пробел больше, чем первая.
- Вы можете добавлять / добавлять новые строки и / или пробелы.
- Вы не можете использовать табуляцию для пробелов (если нет переводчика, который корректно заменяет их пробелами).
- Из-за моей ошибки, вы можете использовать
______ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____
в качестве 1-й строки второй части.
Данные:
Вы можете использовать этот текст в качестве ссылки (но не в качестве ввода):
Содержание: символ, атомный номер, группа, группы периодов 8 и 9 и периоды 4-17 используются для второй части.
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
Разрешены встроенные модули, предоставляющие любую информацию о периодической таблице элементов, но их следует рассматривать отдельно от не встроенных решений.
Самый короткий код на язык выигрывает!
Ответы:
Жевательная резинка , 535 байт
Использует сжатие LZMA.
Попробуйте онлайн!
источник
Excel VBA,
1 023 1020990983975595495 байтПолная
sub
процедура , которая не принимает входной сигнал и выводит периодическую таблицу в диапазон[A1:R10]
наActiveSheet
объекте. Обратите внимание, что, поскольку Excel не может реализовать кривые на границах, (насколько я знаю) эта реализация вместо этого использует красную красную границу для обозначения ряда лантаноидов и актинидов.-3 байта для пробела
-30 байт для изменения
Range("A1:R10")
на[A1:R10]
, удаления пробелов из всехa "some stuff"
вызовов и изменения разделителя с","
на" "
-7 байт для перехода
Range("D6:D7,D9:D10,R9:R10")
на[D6:D7,D9:D10,R9:R10]
-8 байт для перехода от строковых адресов ячеек к
[...]
свернутым ссылкам ячеек-380 байт благодаря @Alexander (убрал нумерацию из данных и вместо этого использовал цикл for)
-100 байт для преобразования массива
String
и использованияMid
функцииВыход
источник
D6:D7
иD9:D10
JavaScript (ES6),
756750 байтОбъяснение:
a
содержит (отформатированные) лантаноиды и актинидыj
используется для отслеживания того, какой персонаж используется для рисования зигзага лантаноидов и актинидовi
это просто номер следующего элемента для форматирования. Несмотря на то, что нет необходимости форматировать элементы по порядку, я думаю, что при этом сохраняется небольшое количество байтов.r
является функцией декодирования длин серий Ожидается, что он будет вызван с использованием строкового параметра шаблона. Любое число в строке приводит к тому, что предыдущий символ повторяется столько раз, напримерr`_5`
, то же самое`_____`
(но, конечно, на 2 байта короче). Изначально у меня была более сложная версия, с которой можно было справиться,r`${i<100} `+i+r`${i++<10} `
но оказалось, что она короче, чтобы сохранить это как особый случай.f
является функцией форматирования элемента Ожидается, что он будет вызван с использованием строкового параметра шаблона, который содержит элементы в виде пар символов (пробел дополняется для имен односимвольных элементов). Возвращается массив из трех строк: одна для номеров элементов, одна для имен элементов и одна для подчеркивания. Если отформатировано более одного элемента, они объединяются с|
разделителем.g
это функция клея. Он ожидает вызова с тремя массивами (второй и третий параметры могут быть строками, если требуется только один символ) и возвращает один массив со всеми соответствующими строками, объединенными вместе.Первые три ряда элементов обрабатываются путем склеивания отформатированных элементов с каждой стороны с соответствующим количеством места. Четвертый и пятый ряды не требуют клея. Шестая и седьмая строки обрабатываются путем склеивания отформатированных элементов с каждой стороны соответствующим зигзагом. Затем 21 ряд объединяется с
|
границами и символами новой строки. Между тем, 6 рядов лантаноидов и актинидов имеют свою подкладку и зигзаг и соединены вместе символами новой строки. Наконец части соединяются с необходимыми остальными элементами форматирования. Редактировать: Сохранено 6 байт, потому что я забыл заменить буквальные переводы строк после разработки кода.Если допустима полная таблица с лантаноидами и актинидами на месте, то для 556 байтов:
Объяснение: Строка содержит список элементов с
-
добавленной в качестве элементов форматирования новой строки. Ряд замен используется для преобразования списка элементов в нужную таблицу.|
s.|
s затем удаляются.-
s заменяются достаточным количеством отступов, чтобы получить ширину 193 символа._
s._
помещается над ним (если оно еще не было)_
s соединяются с_
s.Я мог бы, вероятно, сохранить еще несколько байтов, используя широко доступные методы padStart и padEnd.
источник
19_84 ``+a.map(s=>r`` 18
на18_84 ``+a.map(s=>r`` 17
. Это не влияет на длину кода.Руби, 567
Поднесите ряды La / Ac к основной таблице (повторное чтение правил предполагает, что это разрешено; раздел переформатирован, поэтому
d
используется сразу при вычислении; следующая строка вычисляется математически, а не по регулярному выражению).Руби, 587
оценка исключает 3 ненужных новых строки, добавленных для ясности
объяснение
Идея состоит в том, чтобы произвести следующее, затем изменить его, добавив правильные отступы и форматирование, и переместив лантаноиды и актиниды в нижнюю часть.
Код комментария
источник
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 байта, и, возможно,a[22]=' '*18+?_*84
с другой стороны, мне пришлось бы поставить пробел в строках 4 и 5 над редкоземельными элементами, чтобы для этого был дополнительный код. Трудно сказать, какой будет оценка без этого, но она будет короче.C
141514011395136713451277115910521043 байтаСпасибо @Conor O'Brien за сохранение 6 байтов!
Спасибо @ Zacharý за сохранение
2290 байт!Спасибо @gastropner за сохранение
118225 байт!Спасибо @ceilingcat за сохранение
89 байт!Попробуйте онлайн!
Развернуто (версия 1159 байт):
источник
printf(
вхождения, вот ссылка на ваш код с этими тремя вхождениями, замененнымиP
макросом: repl.it/Jeat/1#define
-ing;L;B
: repl.it/Jeat/305AB1E ,
517500494459458 байтПопробуйте онлайн!
10-е спасибо Эмигне
Позволяет долго гореть визг победы ... Будет гольф больше, но так как это все еще самый короткий ...
Основная мысль
Я наметил каждый из квадратов, где первая цифра соответствует длине числа, а вторая цифра соответствует длине имени элемента. Использовал это для создания скелета (если бы
.C
и.B
не существовало, это легко было бы 300-400 байт):Это то, что выполняет первая половина кода ...
05AB1E , 229 байт
Попробуйте онлайн!
Благодаря уродливым разовым манипуляциям и прочей ерунде, которой не должно быть, мне удается собрать воедино весь скелет.
Следующая часть в основном «вставляет массивную строку букв и цифр, которые представляют элементы». Я просто сжал последовательно все буквы:
Получить:
Затем вы видите, как я повторяю замену всех символов @ соответствующей буквой (в конце, после помещения их в соответствующие позиции, я могу использовать заглавные буквы в заглавных буквах, поскольку каждый элемент разделен пробелом).
Затем я делаю числовую строку и делаю то же самое (спасибо, Эминья):
Результаты в:
Затем я повторяю и заменяю каждый # на.
После этого последним раздражением стали слэши ... Боже мой ...
Это 50-байтовое чудовище - это то, что я хочу исправить, наряду с множеством других мелких вещей ... Так что я продолжу заниматься гольфом, и пока я не исправлю то, что хочу, это будет неофициальным объяснением.
источник
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 байта
Этот подход не является оптимальным. Не могу использовать TIO, так как это использует
[console]::setcursorposition
.источник
SOGL V0.11 , 311 байт (не конкурирует)
Это заняло некоторое время. Чтобы сделать это таким компактным, я, за счет неконкурентного ответа, внедрил много вещей в SOGL (большинство из которых уже были задокументированы). В частности,
- "ž", который помещает массив внутри другого массива в определенные координаты, и
- "►" и "◄" - кодирование и декодирование по длине прогона. Я действительно думал, что задокументировал их, но думаю, что нет.
Попробуй здесь! (сжатие (лениво) обновлено до соответствия 0.12)
Итак, слишком длинное объяснение впереди:
Первая часть: настройка
Вторая часть: петля
Итак, теперь результат выглядит следующим образом .
Третья часть: дополнения
источник
Баш, 728 байт
Проверено на Ubuntu , требует base64 и XZ программы
объяснение
LZMA (цепной алгоритм-алгоритм Лемпеля-Зива-Маркова) выпустил около 0,5К архива с периодической таблицей.
Он содержит непечатаемые символы и не может использоваться непосредственно в консоли. Чтобы использовать это, я закодировал это Base64
Перенаправление потока используется для декодирования и распаковки архива.
Трюки
Для того, чтобы сохранить около 30 байт я удалил новую строку и некоторые пробелы
источник
base64 -D<<Q|xz -d
за которым следует код base64 в отдельной строке и завершающий Q).Excel VBA +,
674296293 байта (определенно читерство)Слишком забавно новое решение, чтобы не поделиться.
Ломает эту стандартную лазейку
Sub
подпрограмма, которая не требует ввода и выводит периодическую таблицу дляactivesheet
объекта; Жестко закодирован для работы со 118 элементамиЭта периодическая таблица включает в себя
Код
Выход
Старая версия, 674 байта
Выход
источник
Жевательная резинка , 600 байт
Попробуйте онлайн!
Вы можете полностью изменить этот hexdump с
xxd -r
.Это результат Zopfliing текста 747 раз в формате DEFLATE.
источник
PHP, 758 байт
После очень небольшого шанса сыграть в гольф я решил работать только со строками
Онлайн версия
расширенный
PHP, 892 байта
Первое рабочее решение с подсчетом байтов в версии для сжатия - решение с массивами
Онлайн версия
PHP, 783 байта
Попробуйте онлайн!
Только с использованием сжатия
PHP, 948 байт
источник
GW-Basic, 598 байт (токенизированный файл)
К сожалению, текстовый режим GW-Basic ограничен 80 столбцами. Я попытался сжать стол, чтобы он подходил, но это не выглядело слишком приятным, поэтому мне пришлось вместо этого использовать графический режим.
Ниже приведен текстовый источник со строками, обернутыми в 80 столбцов для удобства чтения; позаботьтесь о том, чтобы программа работала, и она должна быть сохранена на кодовой странице 437. Если вы попробуете ее, вы обнаружите, что она будет сильно мерцать во время рисования. Сожалею.
GW-Basic не сохраняет свои файлы так эффективно, как мог бы, поэтому, чтобы уменьшить его до 660 байт, вам нужно открыть токенизированный файл в редакторе и вручную удалить все пробелы, кроме одного, символа конца файла и мусора. персонаж перед этим. Это уменьшит его размер до 660 байт, и он все равно будет загружаться и работать нормально.
Редактировать: так как в этом случае не имеет значения, что переменные являются целыми числами, потому что ожидаемая ошибка мала и операции, как
MOD
и\
круглые в любом случае, мы могли бы также превратить их в переменные с плавающей точкой, экономя%
маркер на каждом упоминании. И я заметил, что число35
встречается достаточно часто, и пять байтов, которые требуются для его сохранения в переменную, (просто!) Того стоят. Если вы вели учет, вы заметили, что мы сохранили 43 байта, и файловая система согласна: мы сократили до 617 байтов.Изменить: немного изменив,
S$
я смог сбрить еще шесть байтов:(K=0)*64+
сталоAND 127
.Изменить: Хорошо, я вспомнил, что я хотел изменить способ хранения пустых областей. Это сбрило еще семь байтов, четыре
S$
и еще три, потому чтоGOSUB 3:
было заменено на>9
. И я пожертвовал некоторой эффективностью еще на два байта.Изменить: я пробил барьер 600 байт! Одно дело получить что-то компактное на языке игры в гольф, а другое - сделать это на языке реального мира. И совсем другое, если вы управляете этим в GW-Basic из всех вещей.
S$
получил пять байт больше, но я спас девять байт, заменяяASC(MID$(...))+I-95
сI+1
и добавлениеIF K=1 ... ELSE
на линии1
.источник
Котлин ,
168816671664 байтаВероятно, найти некоторые улучшения для экономии байтов. Но получил это работает, поэтому я публикую это. Спасибо Маззи за 21 байт, объявляющий тебя. Еще 3 байта, удаляющих строку шаблона и использующих непосредственно.
Попробуйте онлайн!
источник
val u="_____"
передfun Int.c()
и 2. замените все 5 символов подчеркивания на $ u. напримерif((r<2&&c>12)||(r==3&&c>2&&c<12))"_$u"
C (gcc) ,
623611 байтПопробуйте онлайн!
Спасибо гастропнеру за 2 байта (и больше за мысль) и cailingcat за 7 байтов
источник
e()
макрос. Ссылка.s[x/18*3+i<5|E(0)&4/7][x%18*6+i<5|E(0)&4%7]
, @ceilingcat не имеет такого значенияBash + openssl + bzcat, 787 байт
Новые строки обязательны. Выводит периодическую таблицу в
stdout
.источник
openssl enc -d -base64
сbase64 -D
Powershell, байты
1077937934906902888878842784688677673667651596 байтовПорт Нейла Javascript
Добавить
rv i,j,a
в конец сценария в состоянииrestart
.Ungolfed
источник
Сетчатка , 888 байт
Попробуйте онлайн!
источник
C ++, 866 байт
Безголовая версия:
Python 3, 730 байт
источник
/// ,
987958 байтПопробуйте онлайн!
Я пытался
источник
Холст , 289 байт
Попробуй это здесь!
источник
Текст , 3148 байт
Успокойся, это шутка.
источник