Wypisz alfabet hebrajski


24

Twoim zadaniem jest wydrukowanie tego dokładnego tekstu:

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

(Możesz wydrukować końcowy znak nowej linii)

Skrót SHA256 kodowania tekstu UTF-8:

0ab6f1e0bf216a0db52a4a5a247f95cba6f51496de7a24dfd01f3985dfcf6085

Kodowanie Base64:

15DXkdeS15PXlNeV15bXl9eY15nXm9ea15zXnted16DXn9eh16LXpNej16bXpden16jXqdeq

Zasady

  • Nie możesz użyć wbudowanego wyjścia tego tekstu.
  • Standardowe luki są niedozwolone.
  • To jest , więc wygrywa najkrótsza odpowiedź.

Powodzenia!


5
Zauważyłem, że punkty kodowe nie są uporządkowane bezpośrednio. Masz 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. Nie znam się zbytnio na hebrajskim, więc czy mógłbyś potwierdzić, że jest to celowe?
DJMcMayhem

11
@DJMcMayhem Unicode wyświetla ostatnie litery przed zwykłymi literami, ale w tekście pytania pytanie jest wymienione wcześniej. To nie było tak naprawdę zamierzone, ale przynajmniej zachęca do odpowiedzi, które nie są tak nudne, jakprint(map(chr, range(x, y)))
TuxCrafting

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

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

2
@Angs To dlatego, że tak naprawdę nie pasuje. echo 15DXkdeS15PXlNeV15bXl9eY15nXm9ea15zXnted16DXn9eh16LXpNej16bXpden16jXqdeq | base64 -d | sha256sumprodukuje f1d4b9c12a197912a4bdb80fb3e4d3fad5a0d9b7edd243fae7b2ab3450618036.
hvd

Odpowiedzi:


25

MATLAB, 52 51 bajtów

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

Przykładowe zastosowanie:

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

Wyjaśnienie

'CCCCCCCCCDADDAEADCDAEADCCC'-66tworzy tablicę [1 1 ... -1 2 1 1 1], która zawiera kolejne różnice między punktami kodowymi pożądanych znaków.

[1488 ...]poprzedza 1488, więc tablica jest teraz [1488 1 1 ... -1 2 1 1 1].

cumsum(...)Oblicza skumulowaną sumę: [1488 1489 ... 1514].

[... '']łączy się z pustym ciągiem. Powoduje to konwersję do char (i jest o jeden bajt krótszy niż char(...))


19

Galareta , 22 21 20 bajtów

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

Wypróbuj online!

Pomysł

Jeśli odejmiemy 1487 z każdego punktu kodu otrzymujemy macierz R , który następuje.

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

To tylko zakres od 1 do 27 , ale nie w porządku rosnącym; pary (11, 12) , (14, 15) , (16, 17) , (20, 21) i (22, 23) zostały zamienione.

Jeśli weźmiemy rosnący zakres i dodamy 2 do 11 , 14 , 16 , 20 i 22 , otrzymamy tablicę A, która następuje.

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

To nie jest już permutacja zakresu, ale jeśli stabilnie posortujemy zakres według wartości w tej tablicy, możemy zrekonstruować pierwotną tablicę.

Kod

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 bajtów (UTF-16)

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

PowerShell Unicode to UTF-16, chyba że wyraźnie zaznaczono inaczej, a następnie jest to crapshoot, ponieważ wszystko to UTF-16 w tle.

To po prostu umieszcza dosłowny ciąg w potoku i domyślny Write-Output pod koniec wykonywania programu wypisuje go na ekran.

Najkrótsza możliwa wersja ASCII to 63

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

Która pobiera wartość ASCII ciągu ABC...i dodaje 1423do każdego, charaby uzyskać odpowiedni ciąg.


6
Pozytywnie oceniany tylko dlatego, że twoja wersja ASCII jest sprytna. Musi ... wspierać ... sprytnie ... grać w golfa!
wizzwizz4,

1
Zajęło mi co najmniej 5 minut, aby uświadomić sobie, że to nie był prawdziwy alfabet w wersji ASCII.
caird coinheringaahing

11

05AB1E , 36 29 26 25 23 bajtów

Zaoszczędzono 2 bajty dzięki Adnan

Wykorzystuje kodowanie CP-1252 .

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

Wypróbuj online!

Wyjaśnienie

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

Interpretacja dużą liczbę jako liczbę podstawa 5 zapisuje dwa bajty: 1488•’ÉÇW–moû•5Bvy<+Dç?.
Adnan

@Adnan: Ach oczywiście. Świetne myślenie!
Emigna

9

Brain-Flak , 172 bajty

Ta odpowiedź jest oparta w dużej mierze na jednym rozwiązaniu DJMcMayhem, więc polecam to sprawdzić.

Podobnie jak rozwiązanie DJMcMayhem, wykorzystuje -rAflagę do odwrócenia wyjścia i drukowania do Unicode.

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

Wypróbuj online!

Wyjaśnienie

Odpowiedziałem na to, przeprowadzając szereg mikrooptymalizacji w stosunku do oryginalnego rozwiązania dostarczonego przez DJMcMayhem. Te optymalizacje podczas zapisywania bajtów powodują, że kod jest nieczytelny, a algorytm tępy. Szczerze mówiąc, tak naprawdę nie rozumiem, jak i co robi mój kod.

Być może kiedyś zrozumiem, jak to działa ...


6

Python 3, 50 bajtów

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

Plik musi zostać utworzony przy użyciu kodowania CP862 lub poprzez odwrócenie następującego zrzutu heksadecymalnego.

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

Prawdopodobnie można go przenieść do Pythona 2 (oszczędzając w ten sposób dwa bajty), ale brakuje mi odpowiednich ustawień narodowych do przetestowania go. Python 3 sumiennie drukuje wersję alfabetu zakodowaną w UTF-8 (lub cokolwiek odpowiedniego dla aktualnych ustawień regionalnych).

Weryfikacja

$ 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 bajty

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

Wypróbuj online!

Jak to działa

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 bajtów

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

Ten kod ma 182 bajty i dodałem 4 bajty dla dwóch flag wiersza poleceń: -ri-u

Wypróbuj online!

Ogromne podziękowania dla @Neil za ten niesamowity metagolfer liczb całkowitych, który stworzył ten słodki sposób pchania 1488 (punkt kodowy pierwszego znaku)

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

Wyjaśnienie:

Naciskanie dużej liczby na atak mózgu jest stosunkowo trudne. Ponieważ jednak czynność wypychania liczby również wpływa na tę liczbę, możemy przesuwać kilka liczb jednocześnie, aby uzyskać ogromne oszczędności bajtów. Oto bardziej konkretny przykład. Najbardziej wewnętrzna część (którą napisałem powyżej) w kodzie psuedo to

push(1488)

To wyrażenie ma wartość 1488, więc zawijamy całość do innej instrukcji push:

push(push(1488) + 1)

Spycha to 1488 i 1489, a także ewaluuje do 1489. Więc zawijamy to:

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

która wypycha 1488, 1489 i 1490, a także ocenia na 1490. Powtórz ten krok dla każdej liczby, którą musimy wypchnąć.

Ponieważ jednak przyrosty nie zawsze wynoszą 1, jest to nieco bardziej skomplikowane. Oto bardziej czytelna wersja:

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

Myślałem, że to +1, -rbo -to się nie liczy
NoOneIsHere

6
@NoOneIsHere -się nie liczy, jeśli jest już obecny w innej opcji (np. W perlu -e). Brain-Flak nie ma takiej opcji, więc -opcja i spacja liczą się w sumie.
Riley

Tylko mała poprawa, którą zrobiłem brain-flak.tryitonline.net/…
Wheat Wizard

@WheatWizard Gdybym to zrobił, nie byłbym w stanie napisać wyjaśnienia. Po prostu wygląda mi na pomieszany nawias klamrowy. : P
DJMcMayhem

To bardzo mała zmiana. Właśnie przeniosłem dwa wystąpienia ()()()na początek i odłożyłem je w górę i w górę.
Wheat Wizard

4

/// , 27 bajtów

ABCDEFGHIQSRTVUXWYbdcfeghiq

Wypróbuj online!

Dane wyjściowe są kodowane w CP424 .

Aby to sprawdzić samodzielnie:

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

Co to za kod? Myślę, że i tak trzeba go przekonwertować na UTF-8. Nie znaczy to, że jest to niekoniecznie: P ma +1
Erik the Outgolfer

@EriktheGolfer Nie ma potrzeby konwertowania go na UTF-8. To nie jest wymóg nigdzie w wyzwaniu.
Mego

Myślę, że może przyciągnąć downvotes wtedy. Pamiętaj, że zamiast ciebie dołączyłem wersję UTF-8 i
zrzut heksowy

4

JavaScript (ES6), 59 bajtów

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

Najlepsze, co mogłem zrobić w ASCII, to 80 79 78 bajtów:

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

Jeśli tablica znaków jest dopuszczalna, 75 bajtów:

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

Edycja: Zapisano niektóre bajty dzięki @IsmaelMiguel. Zaoszczędź kolejny bajt dzięki @ETHproductions. Jeśli używasz przeglądarki Firefox 30-57, możesz zaoszczędzić kolejne 2 bajty dzięki @ETHproductions przy użyciu generatora lub tablic:

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

Możesz zapisać bajt na alternatywie ASCII, używając 0x377BABBCF7F.toString(3). Łącząc to z .map(), możesz zrobić _=>0x377BABBCF7F.toString(3,n=1488).split``.map(_=>String.fromCharCode(++n-_))dla 78 bajtów. Zwraca tablicę znaków.
Ismael Miguel

@ IsmaelMiguel Fajny haczyk, ..ale splittutaj nie korzystamy .
Neil,

Miły. Możesz nieznacznie zmodyfikować wersję tablicy _=>String.fromCharCode(...[...0x377babbcf7f.toString(3)].map(c=>++n-c,n=1488))znaków, aby uzyskać 1 bajt krótszy niż bieżące 79 bajtów.
ETHproductions

@ETHproductions Bah, bawiłem się String.fromCharCode(...)i udało mi się przekonać, że zawsze będzie dłużej. W rzeczywistości zapisuje 4 bajty w moim podstawowym rozwiązaniu 2 (które wciąż ma 84 bajty, ponieważ dekodowanie zajmuje więcej bajtów).
Neil,

Jeśli chcesz używać wyrażeń tablicowych, możesz uzyskać 2 bajty z każdego; string _=>String.fromCharCode(...[for(c of 0x377babbcf7f.toString(3,n=1488))++n-c])_=>[for(c of 0x377babbcf7f.toString(3,n=1488))String.fromCharCode(++n-c))
:,

3

05AB1E , 28 * 2-1 = 55 bajtów

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

Wypróbuj online!

-1 bajt dzięki Emignie + 28 bajtów dzięki DJMCMayhem;).


4
Nie wiem, jakiego używa kodowania 05AB1E, ale bardzo wątpię, czy są to jednobajtowe znaki w czymkolwiek.
DJMcMayhem

@DJMcMayhem Myślę, że TIO ma błąd, te postacie nie istnieją w CP-1252.
Erik the Outgolfer

@EriktheGolfer Najprawdopodobniej używa UTF-8 dla wygody, a następnie interpreter 05AB1E dokonuje niezbędnej wewnętrznej konwersji. To właśnie robię dla V (który używa latin1).
DJMcMayhem

@DJMcMayhem Myślę, że tutaj jest wyświetlany jako UTF-8, ale obsługuje także CP-1252, którego można użyć, aby obniżyć liczbę bajtów. Nie jest to jednak czysty CP-1252, więc musi być uruchamiany z ciągami UTF-8.
Erik the Outgolfer


2

Scala / Groovy / Python 3, 9 znaków ascii + 27 znaków 2-bajtowych = 63 bajty

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

przy założeniu UTF-8

Scala, 59 bajtów

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

x+1423 jest taki sam jak x-'A'+1488


Polygot, działa również w Groovy; także, patrz moja odpowiedź, bytecount jest wyłączony.
Magic Octopus Urn

1
także w python 3 (również python 2, ale wtedy nawiasy nie są konieczne)
user49822,

1
@ caruscomputing Byłbym ostrożny w edytowaniu liczby bajtów innego użytkownika, ponieważ zakładasz pewne kodowanie. Czy na pewno Scala może obsługiwać UTF-8? Ponadto alfabet hebrajski ma 27 liter, więc 61 jest błędnych w ten czy inny sposób.
Dennis

Pierwsza opcja działa również na PHP.
Ismael Miguel


1

C # 6 +, 76 86 82 bajtów

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

Pierwsza próba gry w golfa. Czy robię to dobrze?

EDYCJA : +6 bajtów za zapomnienie o dołączeniu do funkcji. Dzięki @Kevin

C # 5 i poniżej, 86 82 bajtów

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

W rzeczywistości powinieneś wydrukować funkcję lub pełny program. Więc void F(){Console.WriteLine("אבגדהוזחטיכךלמםנןסעפףצץקרשת");}byłoby ważne, albo ()=>{Console.WriteLine("אבגדהוזחטיכךלמםנןסעפףצץקרשת");}jak dobrze myślę (nie wiem o tym ostatnim, choć). Możesz także zagrać w golfa za pomocą .Writezamiast .WriteLine. :) To powiedziawszy, witamy w PPCG! Można znaleźć wskazówki dla golfa w C # interesujące przeczytać. Miłego pobytu.
Kevin Cruijssen

Wiesz, możesz użyć <s>your text</s>do wybicia tekstu zamiast używać dziwnych znaków.
Erik the Outgolfer

Nie wiedziałem o tym. W każdym razie dzięki @EriktheGolfer
terrible-coder


1

ArnoldC, 112 bajtów

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

1

Beczka , 34 bajty

Zainspirowany rozwiązaniem Powershell.

ZYXVWTUSRPQNOMKLJIHGFEDCBA(֏+")(,

TIO


0

BaCon , 57 bajtów

  • W większości języków BASIC znak zapytania reprezentuje po prostu DRUKOWANIE.

  • Na pierwszy rzut oka poniższe rozwiązanie wygląda na 30 bajtów, ale hebrajskie znaki wymagają 2 bajtów pamięci z powodu UTF-8. Mamy więc 27 znaków x 2 bajty + 1 bajt dla „?” i 2 bajty dla podwójnych cudzysłowów = 57 bajtów.

Rozwiązanie:

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

Wypróbuj GW-BASIC z CP862 VGA BIOS na 30. (Ten sam tekst)
Joshua

0

s-lang , 59 bajtów

Naprawdę prosta odpowiedź ...

t[][אבגדהוזחטיכךלמםנןסעפףצץקרשת]
  • t - zamień funkcję (zamienia „nic” na wejściu na alfabet ...)

Wypróbuj tutaj


0

zsh, 25 21 bajtów

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

Moja przeglądarka jest w nieładzie: ת powinna być pierwszą literą, a następnie א. Jeśli jednak wkleisz gdzie indziej, powinno to działać. Stara wersja:

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

Niepoprawne, ponieważ ostatnie litery i zwykłe litery są odwrócone w Unicode
TuxCrafting

Poza tym to tak naprawdę 27 bajtów
TuxCrafting

Aha, a zakres powinien być pierwszy, ale ostatni. Jeśli ciąg jest odwrócony w pytaniu, to dlatego, że hebrajski jest językiem RTL
TuxCrafting

@ TùxCräftîñg w moim terminalu, wyświetla się poprawnie tylko z taf jako pierwszy, ale jako ostatni. Co masz na myśli mówiąc, że „litery końcowe i zwykłe są odwrócone w Unicode”?
Elronnd

W tekście w pytaniu jest כךna przykład (najpierw normalny kaf, ostatni kaf drugi), ale w Unicode ostatnie litery są przed zwykłymi literami ( ךכ), więc wydrukowany tekst jest nieprawidłowy. A jeśli najpierw wyświetla się w tav, to dlatego, że hebrajski jest językiem RTL, więc pierwszy znak jest wyświetlany w prawo
TuxCrafting

0

Java 7, 85 bajtów

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

Nie będę nawet zawracał sobie głowy publikowaniem kodu testowego lub „Wypróbuj tutaj”, jak to zwykle robię…


0

Perl 6 (74)

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



0

C, 49 bajtów

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

Niektórzy użytkownicy mogą potrzebować zadzwonić setlocaleprzed użyciem tego, ale działało to dla mnie dobrze.


Zaproponuj for(i=1488;putwchar(i++)<1514;);zamiastfor(i=0x5d0;i<=0x5ea;i++)wprintf(L"%lc",i);
ceilingcat

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.