Выведите еврейский алфавит

24

Ваша задача распечатать этот точный текст:

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

(Вы можете распечатать завершающий перевод строки)

Хэш SHA256 кодировки текста UTF-8:

0ab6f1e0bf216a0db52a4a5a247f95cba6f51496de7a24dfd01f3985dfcf6085

Кодировка Base64:

15DXkdeS15PXlNeV15bXl9eY15nXm9ea15zXnted16DXn9eh16LXpNej16bXpden16jXqdeq

правила

  • Вы не можете использовать встроенный вывод этого текста.
  • Стандартные лазейки запрещены.
  • Это , поэтому выигрывает самый короткий ответ.

Удачи!

TuxCrafting
источник
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 22.10.16
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 ...]prepends 1488, так что массив сейчас [1488 1 1 ... -1 2 1 1 1].

cumsum(...)вычисляет накопленную сумму: [1488 1489 ... 1514].

[... '']объединяется с пустой строкой. Это имеет эффект преобразования в символ (и на один байт короче, чем 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 , мы получим массив A, который следует.

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чтобы получить соответствующую строку.

AdmBorkBork
источник
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
Emigna
источник
Устный большое число как число база 5 сохраняет два байта: 1488•’ÉÇW–moû•5Bvy<+Dç?.
Аднан
@Adnan: ну конечно. Отличное мышление!
Emigna
9

Brain-Flak , 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

Brain-Flak , 186 байт

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

Этот код имеет длину 182 байта, и я добавил 4 байта для двух флагов командной строки: -rи-u

Попробуйте онлайн!

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

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

Объяснение:

Толкать большое количество в мозговых злобах относительно сложно. Тем не менее, поскольку действие по увеличению числа также приводит к вычислению этого числа, мы можем одновременно нажать несколько чисел для значительной экономии байтов. Вот более конкретный пример. Самая внутренняя часть (которую я написал выше) в коде psuedo

push(1488)

Это выражение оценивается как 1488, поэтому мы завернем все это в другой оператор push:

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
())
())
DJMcMayhem
источник
Я думал, что это +1, -rпотому что -не считается
NoOneIsHere
6
@NoOneIsHere -не считается, если он уже присутствует в другом параметре (например, в Perl -e). У Brain-Flak нет такой опции, как эта, поэтому -опция и пробел в конце концов учитываются в общем количестве.
Райли
Просто небольшое улучшение, которое я сделал brain-flak.tryitonline.net/…
Wheat Wizard
@WheatWizard Если бы я взял это, я бы не смог написать объяснение. Для меня это просто путаница скобок. : P
DJMcMayhem
Это очень маленькое изменение. Я просто переместил два экземпляра ()()()в начало и опустил их вверх и вниз.
Пшеничный волшебник
4

/// , 27 байт

ABCDEFGHIQSRTVUXWYbdcfeghiq

Попробуйте онлайн!

Выход кодируется в CP424 .

Чтобы проверить это самостоятельно:

$ echo ABCDEFGHIQSRTVUXWYbdcfeghiq | ./slashes.pl | python3 -c 'print(bytes(input(), "utf-8").decode("cp424"))' | base64
15DXkdeS15PXlNeV15bXl9eY15nXm9ea15zXnted16DXn9eh16LXpNej16bXpden16jXqdeqCg==
Mego
источник
Что это за код? Я думаю, что его нужно конвертировать в UTF-8 для просмотра в любом случае. Не то чтобы это обязательно недействительно: у P есть +1
Эрик Outgolfer
@EriktheGolfer Нет необходимости конвертировать его в UTF-8. Это не является обязательным требованием.
Мего
Я думаю, что вы могли бы привлечь отрицательные голоса тогда. Обратите внимание, что на вашем месте я бы включил версию UTF-8 и шестнадцатеричный оригинал ...
Эрик Outgolfer
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.
Эрик Outgolfer
@EriktheGolfer Скорее всего, для удобства он использует UTF-8, а затем интерпретатор 05AB1E выполняет необходимое внутреннее преобразование. Это то, что я делаю для V (который использует latin1).
DJMcMayhem
@DJMcMayhem Здесь он отображается как UTF-8, я думаю, но он также поддерживает CP-1252, который можно использовать для уменьшения количества байтов. Это не чистый CP-1252, поэтому он должен работать со строками UTF-8.
Эрик Outgolfer
2

Scala / Groovy / Python 3, 9 ascii-символов + 27 2-байтовых символов = 63 байта

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

при условии UTF-8

Скала, 59 байт

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

x+1423 такой же как x-'A'+1488

corvus_192
источник
Полигот, он работает и в Groovy; также, смотрите мой ответ, bytecount выключен.
Волшебная Урна Осьминога
1
также в Python 3 (также Python 2, но тогда скобки не нужны)
user49822
1
@caruscomputing Я бы с осторожностью отредактировал счетчик байтов другого пользователя, потому что вы предполагаете определенную кодировку. Вы уверены, что Scala может или может работать только с UTF-8? Кроме того, еврейский алфавит состоит из 27 букв, поэтому 61 ​​неверно так или иначе.
Деннис
Первый вариант также работает на PHP.
Исмаэль Мигель
1

К № 6 +, 76 86 82 байта

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

Первая попытка игры в гольф. Я делаю это правильно?

РЕДАКТИРОВАТЬ : +6 байт, если забыли заключить в функцию. Спасибо @Kevin

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

void f(){Console.Write("אבגדהוזחטיכךלמםנןסעפףצץקרשת");}
ужасный кодировщик
источник
На самом деле, вы должны распечатать функцию или полную программу. Так void F(){Console.WriteLine("אבגדהוזחטיכךלמםנןסעפףצץקרשת");}что было бы действительно, или ()=>{Console.WriteLine("אבגדהוזחטיכךלמםנןסעפףצץקרשת");}я думаю, (не уверен насчет этого последнего, хотя). Кроме того, вы можете играть в гольф, используя .Writeвместо .WriteLine. :) Как говорится, добро пожаловать в PPCG! Вы можете найти советы по игре в гольф на C # интересными для чтения. Приятного пребывания.
Кевин Круйссен
Вы знаете, вы можете использовать <s>your text</s>для удара по тексту вместо использования странных символов.
Эрик Outgolfer
Я не знал об этом. В любом случае спасибо @EriktheGolfer
ужасный кодер
1

ArnoldC, 112 байт

IT'S SHOWTIME
TALK TO THE HAND "אבגדהוזחטיכךלמםנןסעפףצץקרשת"
YOU HAVE BEEN TERMINATED
Уриэль
источник
1

Кег , 34 байта

Вдохновленный решением Powershell.

ZYXVWTUSRPQNOMKLJIHGFEDCBA(֏+")(,

TIO

A̲̲
источник
0

BaCon , 57 байт

  • В большинстве бейсиков знак вопроса просто представляет PRINT.

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

Решение:

?"אבגדהוזחטיכךלמםנןסעפףצץקרשת"
Питер
источник
Попробуйте GW-BASIC с VGA BIOS CP862 для 30. (Тот же текст)
Джошуа
0

s-lang , 59 байт

Действительно простой ответ ...

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

Попробуй здесь

MCMastery
источник
0

зш, 25 21 байт

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

Мой браузер все испортил: первая буква должна быть ת, а потом א. Если вы вставите в другое место, это должно сработать. Старая версия:

for i in {ת..א};printf $i
Elronnd
источник
Неправильно, потому что последние буквы и обычные буквы поменялись местами в Юникоде
TuxCrafting
Кроме того, это на самом деле 27 байтов
TuxCrafting
Ох, и диапазон на самом деле должен быть первым и последним. Если строка в вопросе перевернута, то это потому, что иврит является языком RTL
TuxCrafting
@ TùxCräftîñg в моем терминале, он отображается правильно только с первым и последним алефом. Что вы имеете в виду "последние буквы и обычные буквы меняются местами в Юникоде"?
Elronnd
В тексте вопроса есть, כךнапример, (сначала обычный каф, второй финал каф), но в Юникоде конечные буквы перед нормальными буквами ( ךכ), поэтому напечатанный текст недействителен. И если он сначала отображается с тав, то это потому, что иврит - это язык RTL, поэтому первый символ отображается справа
TuxCrafting,
0

Java 7, 85 байт

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

Я даже не собираюсь публиковать тестовый код или «попробуйте здесь», как я обычно делаю ..

Кевин Круйссен
источник
0

Perl 6 (74)

(map (*+1488).chr,[\+] '122222222230330403230403222'.comb >>->>1.join.say
bb94
источник
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);
потолок кошка