Виведіть алфавіт з івриту


24

Ваше завдання - надрукувати саме цей текст:

אבגדהוזחטיכךלמםנןסעפףצץקרשת

(Вам дозволено друкувати останній новий рядок)

SHA256 хеш UTF-8 кодування тексту:

0ab6f1e0bf216a0db52a4a5a247f95cba6f51496de7a24dfd01f3985dfcf6085

Кодування Base64:

15DXkdeS15PXlNeV15bXl9eY15nXm9ea15zXnted16DXn9eh16LXpNej16bXpden16jXqdeq

Правила

  • Ви не можете використовувати вбудований вихід цього тексту.
  • Стандартні лазівки заборонені.
  • Це , тому найкоротша відповідь виграє.

Удачі!


5
Я помітив, що кодові пункти не в порядку прямо. У вас є 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1499, 1498, 1500, 1502, 1501, 1504, 1503, 1505, 1506, 1508, 1507, 1510, 1509, 1511, 1512, 1513, 1514. Я не знаю дуже багато про іврит, тож чи можете ви підтвердити, що це справді навмисно?
DJMcMayhem

11
@DJMcMayhem Unicode перераховує остаточні літери перед звичайними літерами, але у тексті запитання звичайні букви перераховані раніше. Це було насправді не навмисно, але принаймні це заохочує відповіді, які не такі нудні, якprint(map(chr, range(x, y)))
TuxCrafting

6
אני מדבר іврит!
OldBunny2800

6
Aleph null, aleph one, aleph 2, ...
Kritixi Lithos

2
@Angs Це тому, що це дійсно не відповідає. echo 15DXkdeS15PXlNeV15bXl9eY15nXm9ea15zXnted16DXn9eh16LXpNej16bXpden16jXqdeq | base64 -d | sha256sumвиробляє f1d4b9c12a197912a4bdb80fb3e4d3fad5a0d9b7edd243fae7b2ab3450618036.
hvd

Відповіді:


25

MATLAB, 52 51 байт

[cumsum([1488 'CCCCCCCCCDADDAEADCDAEADCCC'-66]) '']

Приклад використання:

>> [cumsum([1488 'CCCCCCCCCDADDAEADCDAEADCCC'-66]) '']
ans =
אבגדהוזחטיכךלמםנןסעפףצץקרשת

Пояснення

'CCCCCCCCCDADDAEADCDAEADCCC'-66створює масив [1 1 ... -1 2 1 1 1], який містить послідовні відмінності між кодовими точками потрібних символів.

[1488 ...]претендує 1488, тому масив зараз [1488 1 1 ... -1 2 1 1 1].

cumsum(...)обчислює накопичену суму: [1488 1489 ... 1514].

[... '']з'єднується з порожнім рядком. Це призводить до перетворення в char (і на один байт коротше char(...))


19

Желе , 22 21 20 байт

27R+“¿ÇÑÞ摦2Ụ+1487Ọ

Спробуйте в Інтернеті!

Ідея

Якщо відняти 1487 від кожної кодової точки, отримаємо масив R, який випливає далі.

1 2 3 4 5 6 7 8 9 10 12 11 13 15 14 17 16 18 19 21 20 23 22 24 25 26 27

Ось лише діапазон від 1 до 27 , але не у порядку зростання; пари (11, 12) , (14, 15) , (16, 17) , (20, 21) та (22, 23) були замінені.

Якщо ми візьмемо висхідний діапазон і додамо від 2 до 11 , 14 , 16 , 20 і 22 , отримаємо масив А, який випливає далі.

1 2 3 4 5 6 7 8 9 10 13 12 13 16 15 18 17 18 19 22 21 24 23 24 25 26 27

Це вже не перестановка діапазону, але якщо ми стабільно сортуємо діапазон за значеннями в цьому масиві, ми можемо відновити вихідний масив.

Код

27R+“¿ÇÑÞ摦2Ụ+1487Ọ  Main link. No arguments.

27R                   Yield [1, ..., 27].
           ¦          Conditional application:
    “¿ÇÑÞæ‘             At indices 11, 14, 16, 20, and 22...
   +        2           add 2 to the corresponding value.
                      This yields the array A from the previous section.
             Ụ        Grade up; sort the indices of the result by its corresponding
                      values. This yields the array R from the previous section.
              +1487   Add 1487 to each integer in R.
                   Ọ  Unordinal; convert integers to characters.

15

PowerShell v2 +, 58 байт (UTF-16)

'אבגדהוזחטיכךלמםנןסעפףצץקרשת'

PowerShell Unicode - це UTF-16, якщо явно не вказано інше, і тоді це все одно скажіння, оскільки це все UTF-16 у фоновому режимі.

Це просто ставить буквальний рядок на конвеєр, а за замовчуванням Write-Outputв кінці виконання програми виводить його на екран.

Найкоротший, з якого я міг отримати версію ASCII, - це 63

-join([char[]]'ABCDEFGHIJLKMONQPRSUTWVXYZ['|%{[char](1423+$_)})

Котрий приймає значення ASCII рядка ABC...і додає 1423до кожного, charщоб отримати відповідний рядок.


6
Оновлено лише тому, що ваша версія ASCII розумна. Потрібно ... підтримати ... розумні ... гольф!
wizzwizz4

1
Мені знадобилося щонайменше 5 хвилин, щоб зрозуміти, що це не власне алфавіт у версії ASCII.
caird coinheringaahing

11

05AB1E , 36 29 26 25 23 байт

Збережено 2 байти завдяки Аднану

Використовує кодування CP-1252 .

1488•’ÉÇW–moû•5Bvy<+Dç?

Спробуйте в Інтернеті!

Пояснення

1488            # push 1488 (accumulator)
•’ÉÇW–moû•      # push 2235174277545950437
5B              # convert from base-5 to base-10 (122222222230330403230403222)
  v             # for each digit in above number
   y<           # decrease it by 1
     +          # add to accumulator
      Dç?       # print a copy of accumulator converted from code point

Усний велике число як число база 5 зберігає два байта: 1488•’ÉÇW–moû•5Bvy<+Dç?.
Аднан

@Adnan: Ну звичайно. Чудове мислення!
Емінья

9

Мозок-Флак , 172 байти

Ця відповідь в основному базується на одному рішення DJMcMayhem, тому я рекомендую вам перевірити це.

Як і рішення DJMcMayhem, цей -rAпрапор використовує прапор для зворотного виводу та друку на unicode.

(((((()()()()()){})))<(((({}{}{}()){({}[()])}{})){}{})>){({}[()]<(({})())>)}{}(((((()()())((((((((({}(((({}())[()])()())()())[()]))[()])()())())()())[()]))[()])()())())())())

Спробуйте в Інтернеті!

Пояснення

Я відповів на цю відповідь, провівши купу мікрооптимізацій щодо оригінального рішення, наданого DJMcMayhem. Ці оптимізації при збереженні байтів роблять код нечитабельним і алгоритм тупим. Я, якщо чесно, не дуже розумію, як чи що робить мій код.

Можливо, колись я зрозумію, як це працює ...


6

Python 3, 50 байт

#coding:cp862
print('אבגדהוזחטיכךלמםנןסעפףצץקרשת')

Файл повинен бути створений за допомогою кодування CP862 або шляхом реверсування наступного шістнадцяткового дампа.

0000000: 23 63 6f 64 69 6e 67 3a 63 70 38 36 32 0a 70 72  #coding:cp862.pr
0000010: 69 6e 74 28 27 80 81 82 83 84 85 86 87 88 89 8b  int('...........
0000020: 8a 8c 8e 8d 90 8f 91 92 94 93 96 95 97 98 99 9a  ................
0000030: 27 29                                            ')

Це, ймовірно, може бути перенесено на Python 2 (таким чином, економлячи два байти), але мені не вистачає належної мови для тестування. Python 3 прискіпливо друкує кодовану UTF-8 версію (або все, що підходить для поточної мови) алфавіту.

Перевірка

$ base64 > hebrew.py -d <<< I2NvZGluZzpjcDg2MgpwcmludCgngIGCg4SFhoeIiYuKjI6NkI+RkpSTlpWXmJmaJyk=
$ wc -c hebrew.py
50 hebrew.py
$ echo $LANG
en_US.UTF-8
$ python3 hebrew.py
אבגדהוזחטיכךלמםנןסעפףצץקרשת

5

CJam , 23 байти

27,"%(*.0"{i_)e\}/'אf+

Спробуйте в Інтернеті!

Як це працює

27,                     Push [0 ... 26].
   "%(*.0"              Push that string. Its code points are [37 40 42 46 48],
                        which are [10 13 15 19 21] modulo the length of the string.
          {     }/      For each character:
           i              Compute its code point.
            _)            Push an incremented copy.
              e\          Swap the integers of [0 ... 26] at those indices.
                  'אf+  Add all resulting integers to the first character of the
                        Hebrew alphabet.

4

Мозг-Флак , 186 байт

(((((((((((((((((((((((((((((((((()()()()()){})){}{}()){({}[()])}{})){}{})())())())())())())())())())()())[()])()())()())[()])()()())[()])()())())()())[()])()()())[()])()())())())())

Цей код довжиною 182 байти, і я додав 4 байти для двох прапорів командного рядка: -rі-u

Спробуйте в Інтернеті!

Велике спасибі @Neil за цей дивовижний цілий метагольфер, який створив цей солодкий спосіб протікання 1488 (кодова точка першого символу)

(((((((()()()()()){})){}{}()){({}[()])}{})){}{})

Пояснення:

Натискання на велику кількість мозку в мозку є відносно важким. Однак, оскільки акт натискання числа також оцінюється до цього числа, ми можемо натиснути на кілька цифр одночасно для масових заощаджень байтів. Ось більш конкретний приклад. Найглибша частина (про яку я писав вище) в коді psuedo - це

push(1488)

Цей вираз оцінюється до 1488, тому ми обгортаємо всю річ в іншому натисканні:

push(push(1488) + 1)

Це підштовхує 1488 та 1489 рр., А також оцінює 1489 р. Отже, ми завершуємо це:

push(push(push(1488) + 1) + 1)

який натискає 1488, 1489 та 1490, а також оцінює до 1490. Повторіть цей крок для кожного числа, яке нам потрібно просунути.

Однак, оскільки прирости не завжди є 1, це трохи складніше, ніж це. Ось більш читаема версія:

(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
#Push 1488
(((((((()()()()()){})){}{}()){({}[()])}{})){}{})
())     # + 1
())
())
())
())
())
())
())
())
()())   # + 2
[()])   # - 1
()())   # + 2
()())
[()])   # - 1
()()()) # + 3
[()])   # - 1
()())   # + 2
())     # + 1
()())   # + 2
[()])   # - 1
()()()) # + 3
[()])   # - 1
()())   # + 2
())     # + 1
())
())

Я подумав, що це +1, -rтому що -не
рахується

6
@NoOneIsHere -не враховується, якщо він уже присутній в іншому варіанті (наприклад, в perl -e). У Brain-Flak немає такого варіанту, як, отже -, варіант і простір зрештою зараховуються до загального.
Райлі

Ще трохи покращення я зробив brain-flak.tryitonline.net/…
Мастер пшениці

@WheatWizard Якби я взяв це, я б не зміг написати пояснення. Мені це просто схоже на змішаний безлад дужок. : P
DJMcMayhem

Це дуже мала зміна. Я просто перемістив два екземпляри ()()()на початок і відклав їх вниз і вгору.
Пшеничний майстер

4

/// , 27 байт

ABCDEFGHIQSRTVUXWYbdcfeghiq

Спробуйте в Інтернеті!

Вихід кодується в CP424 .

Щоб перевірити це самостійно:

$ echo ABCDEFGHIQSRTVUXWYbdcfeghiq | ./slashes.pl | python3 -c 'print(bytes(input(), "utf-8").decode("cp424"))' | base64
15DXkdeS15PXlNeV15bXl9eY15nXm9ea15zXnted16DXn9eh16LXpNej16bXpden16jXqdeqCg==

Що це за код? Я думаю, що його потрібно перетворити на UTF-8 для цілей перегляду. Не те, що це обов'язково недійсно: P мають +1
Ерік Вихідний,

@EriktheGolfer Не потрібно перетворювати його на UTF-8. Це не є вимогою ніде у виклику.
Мего

Я думаю, що тоді ти можеш залучити низовини. Зауважте, що на вашому місці я б включив версію UTF-8 та шестинадцятку оригіналу ...
Ерік Атголфер

4

JavaScript (ES6), 59 байт

_=>"אבגדהוזחטיכךלמםנןסעפףצץקרשת"

Найкраще, що я міг зробити в ASCII, було 80 79 78 байт:

_=>String.fromCharCode(...[...0x377babbcf7f.toString(3)].map(c=>++n-c,n=1488))

Якщо масив символів прийнятний, 75 байт:

_=>[...0x377babbcf7f.toString(3)].map(c=>String.fromCharCode(++n-c),n=1488)

Редагувати: збережено кілька байтів завдяки @IsmaelMiguel. Збережено ще один байт завдяки @ETHproductions. Якщо ви використовуєте Firefox 30-57, ви можете зберегти ще 2 байти завдяки @ETHproductions, використовуючи розуміння генератора чи масиву:

_=>String.fromCharCode(...(for(c of 0x377babbcf7f.toString(3,n=1488))++n-c))
_=>[for(c of 0x377babbcf7f.toString(3,n=1488))String.fromCharCode(++n-c)]

Ви можете зберегти байт на альтернативі ASCII, використовуючи 0x377BABBCF7F.toString(3). Поєднавши це .map(), ви можете зробити _=>0x377BABBCF7F.toString(3,n=1488).split``.map(_=>String.fromCharCode(++n-_))78 байт. Він повертає масив символів.
Ісмаїл Мігель

@IsmaelMiguel Хороший улов, ..але ми тут не використовуємо split.
Ніл

Приємно. Ви можете трохи змінити версію char-масиву, щоб отримати _=>String.fromCharCode(...[...0x377babbcf7f.toString(3)].map(c=>++n-c,n=1488)), на 1 байт коротше, ніж поточні 79 байт.
ETHproductions

@ETHproductions Ба, я зіграв із собою String.fromCharCode(...)і встиг переконати себе, що завжди буде довше. Насправді це економить 4 байти на моєму базі 2 (це все ще 84 байти, оскільки для декодування потрібно більше байтів).
Ніл

Якщо ви готові використовувати розуміння масиву, ви можете отримати 2 байти від кожного; string:, _=>String.fromCharCode(...[for(c of 0x377babbcf7f.toString(3,n=1488))++n-c])char-array:_=>[for(c of 0x377babbcf7f.toString(3,n=1488))String.fromCharCode(++n-c))
ETHproductions

3

05AB1E , 28 * 2-1 = 55 байт

"אבגדהוזחטיכךלמםנןסעפףצץקרשת

Спробуйте в Інтернеті!

-1 байт завдяки Emigna + 28 байт завдяки DJMCMayhem;)


4
Я не знаю, що використовує кодування 05AB1E, але я дуже сумніваюся, що це однобайтові символи в будь-якому випадку.
DJMcMayhem

@DJMcMayhem Я думаю, що в TIO є помилка, цих символів немає в CP-1252.
Ерік Аутгольфер

@EriktheGolfer Швидше за все, він використовує UTF-8 для зручності, і тоді інтерпретатор 05AB1E робить необхідне внутрішнє перетворення. Це те, що я роблю для V (який використовує latin1).
DJMcMayhem

@DJMcMayhem Тут він показаний як UTF-8 Я думаю, але він також підтримує CP-1252, який ви можете використовувати, щоб ваш байт був меншим. Це не є чистим CP-1252, тому його потрібно запускати з рядками UTF-8.
Ерік Аутгольфер


2

Scala / Groovy / Python 3, 9 ascii-chars + 27 2-байтових знаків = 63 байти

print("אבגדהוזחטיכךלמםנןסעפףצץקרשת")

припускаючи UTF-8

Скала, 59 байт

print("ABCDEFGHIJLKMONQPRSUTWVXYZ["map(x=>(x+1423).toChar))

x+1423 те саме, що x-'A'+1488


Polygot, він працює і в Groovy; також, дивіться мою відповідь, кількість рахунків вимкнено.
Magic Octopus Urn

1
також у python 3 (також python 2, але тоді дужки не потрібні)
user49822

1
@caruscomputing Мені слід з обережністю редагувати кількість байтів іншого користувача, тому що ви передбачаєте певне кодування. Ви впевнені, що Scala вміє працювати з UTF-8? Також єврейський алфавіт має 27 літер, тому 61 ​​так чи інакше помиляється.
Денніс

Перший варіант також працює на PHP.
Ісмаїл Мігель


1

C # 6 +, 76 86 82 байт

void f()=>Console.Write("אבגדהוזחטיכךלמםנןסעפףצץקרשת");

Перша спроба гольфу. Чи правильно я це роблю?

EDIT : +6 байт, щоб забути укласти функцію. Дякую @Kevin

Версія C # 5 і нижче, 86 82 байт

void f(){Console.Write("אבגדהוזחטיכךלמםנןסעפףצץקרשת");}

Насправді вам слід надрукувати функцію або повну програму. Так void F(){Console.WriteLine("אבגדהוזחטיכךלמםנןסעפףצץקרשת");}би було дійсно, або, ()=>{Console.WriteLine("אבגדהוזחטיכךלמםנןסעפףצץקרשת");}як я думаю, (не впевнений у цьому останньому). Крім того, ви можете грати в гольф, використовуючи .Writeзамість цього .WriteLine. :) Це, як сказано, ласкаво просимо до PPCG! Можливо, ви знайдете поради щодо гольфу в C #, цікаві для прочитання. Насолодитися перебуванням.
Kevin Cruijssen

Ви знаєте, ви можете використовувати <s>your text</s>для удару по тексту, а не використовувати дивні символи.
Ерік Аутгольфер

Я про це не знав. У будь-якому випадку дякую @EriktheGolfer
жахливо-кодер


1

ArnoldC, 112 байт

IT'S SHOWTIME
TALK TO THE HAND "אבגדהוזחטיכךלמםנןסעפףצץקרשת"
YOU HAVE BEEN TERMINATED


0

BaCon , 57 байт

  • У більшості BASIC знак питання просто представляє PRINT.

  • На перший погляд, рішення внизу виглядає як 30 байт, але івритові символи потребують 2 байтів пам’яті через UTF-8. Отже, є 27 символів x 2 байти + 1 байт для '?' і 2 байти для подвійних лапок = 57 байт.

Рішення:

?"אבגדהוזחטיכךלמםנןסעפףצץקרשת"

Спробуйте GW-BASIC з VGA BIOS CP862 на 30. (той самий текст)
Джошуа

0

s-lang , 59 байт

Дійсно проста відповідь ...

t[][אבגדהוזחטיכךלמםנןסעפףצץקרשת]
  • t - функція заміни (замінює "нічого" на вході алфавітом ...)

Спробуйте тут


0

zsh, 25 21 байт

echo ${(j..):-{ת..א}}

Мій браузер це заплутав: ת має бути першою літерою, потім א. Якщо ви вставите десь ще, це повинно працювати. Стара версія:

for i in {ת..א};printf $i

Недійсне, тому що остаточні та звичайні літери змінюються в Unicode
TuxCrafting

Крім того, це насправді 27 байт
TuxCrafting

О, а діапазон насправді повинен бути алефом першим і останнім тав. Якщо рядок перетворено в питанні, це тому, що іврит є мовою RTL
TuxCrafting

@ TùxCräftîñg в моєму терміналі, він відображається правильно лише за допомогою taf спершу алефа останнього. Що ви маєте на увазі "підсумкові літери та звичайні букви обернені в Unicode"?
Елронд

У тексті запитання є, כךнаприклад, (звичайний перший каф, останній каф другий), але в Unicode остаточні букви стоять перед звичайними літерами ( ךכ), тому надрукований текст недійсний. І якщо він відображається спочатку з tav, це тому, що іврит є мовою RTL, тому перший символ відображається праворуч
TuxCrafting

0

Java 7, 85 байт

void c(){System.out.print("אבגדהוזחטיכךלמםנןסעפףצץקרשת");}

Я навіть не збираюся заважати розміщувати тестовий код або "Спробуйте тут", як це роблю зазвичай.


0

Perl 6 (74)

(map (*+1488).chr,[\+] '122222222230330403230403222'.comb >>->>1.join.say



0

C, 49 байт

f(i){for(i=0x5d0;i<=0x5ea;i++)wprintf(L"%lc",i);}

Деяким користувачам, можливо, доведеться зателефонувати setlocaleперед тим, як скористатися цим, але це спрацювало нормально.


Запропонувати for(i=1488;putwchar(i++)<1514;);замістьfor(i=0x5d0;i<=0x5ea;i++)wprintf(L"%lc",i);
roofcat

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.