输出希伯来字母


24

您的任务是打印以下确切文本:

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

(您可以打印尾随换行符)

文本的UTF-8编码的SHA256哈希:

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 16-10-21

6
אנימדברעברית!
OldBunny2800

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

2
@Angs那是因为它确实不匹配。echo 15DXkdeS15PXlNeV15bXl9eY15nXm9ea15zXnted16DXn9eh16LXpNej16bXpden16jXqdeq | base64 -d | sha256sum产生f1d4b9c12a197912a4bdb80fb3e4d3fad5a0d9b7edd243fae7b2ab3450618036
2013年

Answers:


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的作用(比短1个字节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

范围是127,但不是升序;对(11,12)(14,15)(16,17)(20,21)(22,23)已被交换。

如果我们把升范围,并添加211141620,和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 2016年

1
我花了至少5分钟的时间才意识到这不是ASCII版本中的实际字母。
caird coinheringaahing

11

05AB1E36 29 26 25 23字节

感谢Adnan,节省了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:当然可以。好主意!
Emigna

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

Brain-Flak,186字节

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

这段代码长182个字节,我为两个命令行标志添加了4个字节:-r-u

在线尝试!

非常感谢@Neil的出色的整数metagolfer,它创造了这种推入1488(第一个字符的代码点)的甜蜜方式

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

说明:

大量推销相对困难。但是,由于推入数字的行为也会影响该数字,因此我们可以同时推入多个数字以节省大量字节。这是一个更具体的例子。伪代码中最里面的部分(我在上面写过)是

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
())
())

我以为是+1,-r因为这-不算
NoOneIsHere

6
@NoOneIsHere -不计算它是否已经存在于其他选项中(例如,在perl中-e)。Brain-Flak没有这样的现有选项,因此-,该选项和所有空间最终都计入总数。
莱利


@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
Egg the Outgolfer

@EriktheGolfer无需将其转换为UTF-8。挑战中的任何地方都不是必需的。
Mego

我认为您那时可能会吸引反对者。请注意,在您的位置上,我会包括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,则可以使用生成器或数组推导功能@ETHproductions节省另外2个字节:

_=>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-array版本,使其_=>String.fromCharCode(...[...0x377babbcf7f.toString(3)].map(c=>++n-c,n=1488))比当前的79个字节短1个字节。
ETHproductions '16

@ETHproductions Bah,我玩过,String.fromCharCode(...)并设法说服自己永远会更长。实际上,在我的base 2解决方案中,它节省了4个字节(仍为84个字节,因为需要更多的字节来解码)。
尼尔

如果您愿意使用数组推导,则可以从每个数组中减去2个字节。字符串:_=>String.fromCharCode(...[for(c of 0x377babbcf7f.toString(3,n=1488))++n-c]),字符数组:_=>[for(c of 0x377babbcf7f.toString(3,n=1488))String.fromCharCode(++n-c))
ETHproductions's October

3

05AB1E,28 * 2-1 = 55字节

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

在线尝试!

-1字节归功于Emigna + 28字节归功于DJMCMayhem;)。


4
我不知道05AB1E使用什么编码,但是我非常怀疑它们是1字节字符。
DJMcMayhem

@DJMcMayhem我认为TIO有一个错误,CP-1252中不存在这些字符。
暴民埃里克(Erik the Outgolfer)

@EriktheGolfer为方便起见,它很可能使用UTF-8,然后05AB1E解释器进行必要的内部转换。这就是我为V(使用latin1)所做的。
DJMcMayhem

@DJMcMayhem我认为它在此处显示为UTF-8,但它也支持CP-1252,您可以使用它来减少字节数。但是,这不是纯CP-1252,因此必须与UTF-8字符串一起运行。
暴民埃里克(Erik the Outgolfer)


2

Scala / Groovy / Python 3、9个ascii字符+ 27个2字节字符= 63字节

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

假设为UTF-8

Scala,59个字节

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

x+1423 是相同的 x-'A'+1488


Polygot,它也适用于Groovy。另外,请参阅我的答案,bytecount已关闭。
魔术八达通Ur

1
也在python 3中(也是python 2,但也不需要括号)
user49822 16/10/21

1
@caruscomputing我会警惕编辑另一个用户的字节数,因为您假设使用某种编码。您确定Scala可以或只能处理UTF-8吗?另外,希伯来字母有27个字母,因此61种方式是错误的。
丹尼斯

第一个选项也适用于PHP。
Ismael Miguel


1

C#6 +, 76 86 82字节

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

第一次尝试打高尔夫球。我这样做对吗?

编辑:+ 6个字节,用于忘记包含在函数中。谢谢@凯文

C#5及以下版本,86 82字节

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

实际上,您应该打印功能或完整程序。所以void F(){Console.WriteLine("אבגדהוזחטיכךלמםנןסעפףצץקרשת");}是有效的,或者()=>{Console.WriteLine("אבגדהוזחטיכךלמםנןסעפףצץקרשת");}我也认为(尽管不确定最后一个)。另外,您可以使用.Write代替来打高尔夫球.WriteLine。:)话虽如此,欢迎来到PPCG!您可能会发现通读C#的高尔夫技巧很有趣。入住愉快。
凯文·克鲁伊森

您知道,您可以<s>your text</s>用来删除某些文本,而不必使用奇怪的字符。
暴民埃里克

我当时不知道。无论如何,感谢@EriktheGolfer
糟糕的编码器


1

ArnoldC,112个字节

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


0

培根,57字节

  • 在大多数BASIC中,问号只是表示PRINT。

  • 乍一看,下面的解决方案看起来像30个字节,但是由于UTF-8,希伯来字符需要2个字节的存储空间。因此,“?”有27个字符x 2个字节+ 1个字节。双引号的2个字节= 57个字节。

解:

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

尝试使用带有CP862 VGA BIOS的GW-BASIC30。(相同的文本)
约书亚

0

s-lang,59个字节

答案很简单...

t[][אבגדהוזחטיכךלמםנןסעפףצץקרשת]
  • t -替换功能(用字母替换输入中的“无” ...)

在这里尝试


0

zsh, 25 21字节

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

我的浏览器搞砸了:the应该是第一个字母,然后是א。但是,如果将其粘贴到其他地方,则应该可以使用。旧版本:

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

无效,因为最终字母和普通字母在Unicode中被颠倒
TuxCrafting 16-10-22

另外,它实际上是27个字节
TuxCrafting '16

哦,范围实际上应该先是aleph,最后是tav。如果问题中的字符串是反向的,那是因为希伯来语是RTL语言
TuxCrafting

@TùxCräftîñg在我的终端机中,它只能正确显示,而首先是taf,最后是aleph。您是什么意思“在Unicode中将最后一个字母和普通字母颠倒了”?
Elronnd '16

在问题文本中,כך例如(普通kaf在前,最后kaf在后),但是在Unicode中,末字母在普通字母(ךכ)之前,因此打印的文本无效。如果首先显示tav,那是因为希伯来语是RTL语言,因此第一个字符显示在最右边
TuxCrafting 16-10-22

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);
凌晨

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.