Таблица менделеева распечатать каждый элемент отдельно: Таблица Менделеева для печати

code golf – Печать периодической таблицы Ƨu≡ā⁄b⅔►

<≡7⅛±√‽ε¶&⁶7zV¾UΥY○ΝΚq╬#∫⅜āP⁴7‼%Æ«∑+‼Ψ_№QΕ¦→3γ:Ηρ':υy7▒Ξυlσ№׷UņcΗ‐Oė γjΒ%G≤§┐⌠≈δ{oR{ΘKUƨA▒V⁶ ³'2n '`Δ"²zōdΕ«⅝ ←╝⅔πφ“'³─◄"³υ≥τk┐?№L‚↑γ°“'³─6 «{K;K;A{:I}a}X¹¹Hā;{⁾J6*;J3*;Jl1=@*+l3κ@*ΚΚ"<Ψ:$ō∫ΣO±>⁄’7nž}”‛‽‛ №l№’2n{_”□׀⁵’čž}”O⁶‛±0±‛¤3¤M¤’2n{_”P8’ž

Это заняло некоторое время. Чтобы сделать его таким компактным, я реализовал много вещей в SOGL (большинство из которых уже были задокументированы). В частности,

  • “ž”, который помещает массив внутри другого массива в определенных координатах, и
  • “►” и “◄” – серийное кодирование и декодирование. Я действительно думал, что задокументировал их, но, похоже, это было не так.

Попробуйте здесь! (сжатие (лениво) обновлено для соответствия 0.12)

Итак, слишком длинное объяснение впереди:

Первая часть: настройка

 f¤o3,hģ_lμgΣ│Τ┐xC‚¦⁽?%□f⁵↕υ/gκ÷⌠ — →3γ:Ηρ':υy7▒Ξυσ╤ņcΗOī{═─⁷׀Uγlλ№γjΒ%G≤§┐⌠≈δ{oR{ΘKUƨA▒V⁶ ³'2n
...‘ push "h helibeb c n of nenamgalsip s clark casctiv crmnfeconicuzngageassebrkrrbsry zrnbmotcrurhpdagcdinsnsbtei xecsbalaceprndpmsmeugdtbdyhoertmybluhftaw reosirptauhgtlpbbipoatrnfrraacthpau nppuamcmbkcfesclmbdhdnolrrf"fgvcfmsmmdnolrrfdbsgb
    2n разбивается на массив с элементами длины 2
Это имена элементов, удобно уже сформированные, как они должны быть.
''Δ '` нажмите 118 Диапазон Δ - все числа от 1 до 118 это атомные номера "²zōdΕ«⅝ ←╝⅔πφ"'³─◄ «…» нажать 794198124771504466790502538 '³ нажать 19 ─ base[19] decode - в результате получается массив [1, 2, 2, 8, 3, 8, 4, 18, 5, 18, 6, 3, 9, 14, 6, 15, 7, 3, 10, 14 , 7, 15] ◄ декодирование длин серий Конечный результат: [1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7] Это периоды с 9и 10 для лантаноидов и актиноидов соответственно. "³υ≥τk┐?№L‚↑γ°"'³─6«{K;K;A{:I}a}X¹ "..." нажмите 270687554118568732622432847987 '³─ декодирование по основанию 19, в результате чего получается [1, 0, 18, 0, 1, 1, 13, 5, 1, 1, 13, 5, 1, 17, 1, 17, 1, 16, 4, 14, 1, 16, 4, 14] 6«{ } повторить 12 раз К;К; получить первые 2 элемента массива под массивом (например: .
.., 13, 5, [1, 1, 13, 5, 1, 17, 1, 17, 1, 16, 4, 14, 1) , 16, 4, 14]) A сохранить массив в переменной A (чтобы он не мешался) ..., 13, 5 { } повторить POP раз ..., 13 : продублировать число ..., 13, 13 Я увеличиваю его ..., 13, 14 и так далее (например, 5 раз, в результате получается 6 чисел) ..., 13, 14, 15, 16, 17, 18, [1, 1, 13, 5, 1, 17, 1, 17, 1, 16, 4, 14, 1, 16, 4, 14] загрузить обратно массив повторяя это все 12 раз X удалить массив из стека ¹ оберните все эти числа в массив Конечный результат: [1, 18, 1, 2, 13, 14, 15, 16, 17, 18, 1, 2, 13, 14, 15, 16, 17, 18, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 , 17, 18, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 4, 5, 6, 7, 8, 9 , 10, 11, 12, 13, 14, 15, 16, 17, 18, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 , 17, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18] Это периоды, которые можно так красиво сжать, потому что если атомные номера отсортированы, то и они тоже.

Вторая часть: петля

 ¹Hā;{
¹ объединить все эти 4 массива в один большой массив
 H повернуть влево
            [[а, б, в], [["в", 3, 6]
         Итак, [1, 2, 3], становится ["b", 2, 5] . Теперь структура подмассива [имя, атомный номер, группа, период]
             [4, 5, 6]] ["а", 1, 4]]
         Пара важных вещей по этому поводу:
           - он заставляет каждый новый подмассив содержать все данные из всех массивов с постоянным индексом
           - меняет местами индексы - были заданы a,b,c, но теперь в каждом подмассиве первыми элементами являются c, b, a.
             Это важно, потому что последние элементы будут отрисовываться первыми, поэтому все будет отображаться правильно. См. https://gist.github.com/dzaima/221d179.2e03d0429e3403cf255c66926 для того, что произойдет, если это не изменится.
  а; вставьте пустой массив ниже этого большого массива
    { для каждого подмассива
⁾J6*;J3*;
⁾ переводите элементы массива в предложение, игнорируя числа. Делает заглавной 1-ю букву имени
 J pop получить последний элемент массива [["Au", 79, 6], 11]
  6* умножить на 6 - координата X [["Au", 79, 6], 66]
    ; swap, получая массив выше [66, ["Au", 79, 6]]
     J pop получить последний элемент массива [66, ["Au", 79], 6]
      3* умножить на 6 - координата Y [66, ["Au", 79], 18]
        ; поменять местами, получив массив выше [66, 18, ["Au", 79]]
Jl1=@*+l3κ@*ΚΚ"<Ψ:$ō∫ΣO±>
⁄‘7nž} J получить 1-й элемент массива [84, 6, ["C"], 6] [66, 18, ["Au"], 79] [96, 21, ["Lv"], 116] l получить длину [84, 6, ["C"], 6, 1] [66, 18, ["Au"], 79, 2] [96, 21, ["Ур"], 116, 3] 1= push if [length] = 1 [84, 6, ["C"], 6, 1] [66, 18, ["Au"], 79, 0] [96, 21, ["Lv"], 116, 0] @* получить такое количество пробелов [84, 6, ["C"], 6, ""] [66, 18, ["Au"], 79, ""] [96, 21, ["Lv"], 116 , ""] + присоединить [84, 6, ["C"], "6"] [66, 18, ["Au"], "79"] [96, 21, ["Lv"], "116"] l получить длину [84, 6, ["C"], "6", 2] [66, 18, ["Au"], "79", 2] [96, 21, ["Ур"], "116", 3] 3κ делать 3-[длина] [84, 6, ["С"], "6", 1] [66, 18, ["Аи"], "79", 1] [96, 21, ["Ур" ], "116", 0] @* получить такое количество пробелов [84, 6, ["C"], "6", ""] [66, 18, ["Au"], "79", ""] [96, 21, ["Lv "], "116", ""] Κ добавить перед теми [84, 6, ["C"], "6"] [66, 18, ["Au"], "79"] [96, 21, ["Lv"], "116"] Κ добавьте, что в массиве [84, 6, [" 6 ", "C"]] [66, 18, [" 79", "Au"]] [96, 21, ["116", "Lv"]] ".
.." нажать " _____ | ŗ || ŗ ||_____|", заменив ŗ на соответствующий элемент из массива [66, 18, " _____ | 79 || Au ||_____|"] 7n разбить это на массив элементов длиной 7 [66, 18, "_____", "| 79 |", "| Au |", "|_____|"] ž установить этот массив в позиции [66, 18] в массиве ниже } завершить цикл for-each

Теперь вывод выглядит так.

Третья часть: Дополнения

 "‛‽‛№l№’2n{_"□׀⁵‘čž}
"...’ } протолкнуть индексы кодовых страниц символов [24, 19, 24, 28, 108, 28]
     2n разбит на массив элементов длины 2 [[24, 19], [24, 28], [108, 28]]
       { для каждого подмассива
        _ поместить все содержимое массива в стек [24, 19]
         "..." нажать "\/\/\/" [24, 19, "\/\/\/"]
              č разбит на массив символов [24, 19, ["\", "/", "\", "/", "\", "/"]]
               ž заменить в материнском массиве координаты [например, 24, 19] с этими символами
«O⁶‛±0±‛¤3¤M¤’2n{_»P8‘ž
«...» протолкнуть индексы кодовых страниц символов [79, 6, 24, 12, 48, 12, 24, 27, 51, 27, 77, 27]
     2n разбит на массив элементов длины 2 [[79, 6], [24, 12], [48, 12], [24, 27], [51, 27], [77, 27]]
       { для каждого подмассива (неявно закрытого)
        _ поместить все содержимое массивов в стек [79, 6]
         "Р8" нажать "_____________________________" [79, 6, "_____________________________"]
             ž заменить в материнском массиве координаты [например, 79, 6] с этой строкой
 

Искусство периодической таблицы – Etsy.

Оставить комментарий