Stampa l'alfabeto ebraico


24

Il tuo compito è stampare questo testo esatto:

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

(È consentito stampare una nuova riga finale)

Hash SHA256 della codifica UTF-8 del testo:

0ab6f1e0bf216a0db52a4a5a247f95cba6f51496de7a24dfd01f3985dfcf6085

Codifica Base64:

15DXkdeS15PXlNeV15bXl9eY15nXm9ea15zXnted16DXn9eh16LXpNej16bXpden16jXqdeq

Regole

  • Non puoi usare un built-in che emette questo testo.
  • Le scappatoie standard non sono ammesse.
  • Questo è , quindi vince la risposta più breve.

In bocca al lupo!


5
Ho notato che i punti di codice non sono direttamente in ordine. Hai 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. Non so molto sull'ebraico, quindi potresti confermare che questo è davvero intenzionale?
DJMcMayhem

11
@DJMcMayhem Elenco Unicode delle lettere finali prima delle lettere normali ma nel testo nella domanda le lettere normali sono elencate prima. Non era davvero intenzionale, ma almeno incoraggiava risposte non noiose comeprint(map(chr, range(x, y)))
TuxCrafting

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

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

2
@Angs Questo perché non corrisponde davvero. echo 15DXkdeS15PXlNeV15bXl9eY15nXm9ea15zXnted16DXn9eh16LXpNej16bXpden16jXqdeq | base64 -d | sha256sumproduce f1d4b9c12a197912a4bdb80fb3e4d3fad5a0d9b7edd243fae7b2ab3450618036.
hvd,

Risposte:


25

MATLAB, 52 51 byte

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

Esempio di utilizzo:

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

Spiegazione

'CCCCCCCCCDADDAEADCDAEADCCC'-66produce l'array [1 1 ... -1 2 1 1 1], che contiene le differenze consecutive tra i punti di codice dei caratteri desiderati.

[1488 ...]antepone 1488, quindi l'array lo è ora [1488 1 1 ... -1 2 1 1 1].

cumsum(...)calcola la somma cumulativa: [1488 1489 ... 1514].

[... '']si concatena con la stringa vuota. Ciò ha l'effetto di convertire in char (ed è un byte più corto di char(...))


19

Gelatina , 22 21 20 byte

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

Provalo online!

Idea

Se sottraggiamo 1487 da ogni punto di codice, otteniamo l'array R che segue.

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

Questo è solo l'intervallo da 1 a 27 , ma non in ordine crescente; le coppie (11, 12) , (14, 15) , (16, 17) , (20, 21) e (22, 23) sono state scambiate.

Se prendiamo l'intervallo crescente e aggiungiamo da 2 a 11 , 14 , 16 , 20 e 22 , otteniamo l'array A che segue.

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

Questa non è più una permutazione dell'intervallo, ma se ordiniamo stabilmente l'intervallo in base ai valori in quell'array, possiamo ricostruire l'array originale.

Codice

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 byte (UTF-16)

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

PowerShell Unicode è UTF-16 se non diversamente specificato esplicitamente, quindi è comunque un crapshoot dal momento che è tutto UTF-16 in background.

Questo mette semplicemente la stringa letterale sulla pipeline e l'impostazione predefinita Write-Outputalla fine dell'esecuzione del programma la stampa sullo schermo.

Il più breve che ho potuto ottenere la versione ASCII è 63

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

Che prende il valore ASCII della stringa ABC...e si aggiunge 1423a ciascuno charper ottenere la stringa appropriata.


6
Eseguito l'upgrade solo perché la tua versione ASCII è intelligente. Deve ... supportare ... intelligente ... giocare a golf!
wizzwizz4,

1
Mi ci sono voluti almeno 5 minuti per capire che non era l'alfabeto reale nella versione ASCII.
caird coinheringaahing il

11

05AB1E , 36 29 26 25 23 byte

Salvato 2 byte grazie ad Adnan

Utilizza la codifica CP-1252 .

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

Provalo online!

Spiegazione

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

Interpretare il grande numero come numero di base 5 salva due byte: 1488•’ÉÇW–moû•5Bvy<+Dç?.
Adnan,

@Adnan: Ah certo. Ottimo pensiero!
Emigna,

9

Brain-Flak , 172 byte

Questa risposta si basa principalmente su una soluzione di DJMcMayhem qui, quindi ti consiglio di dare un'occhiata.

Come la soluzione di DJMcMayhem, questa utilizza il -rAflag per invertire l'output e stampare in Unicode.

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

Provalo online!

Spiegazione

Ho fatto questa risposta eseguendo un sacco di micro-ottimizzazioni sulla soluzione originale fornita da DJMcMayhem. Queste ottimizzazioni durante il salvataggio dei byte, rendono il codice illeggibile e l'algoritmo ottuso. Ad essere sincero, non capisco davvero come o cosa faccia il mio codice.

Forse un giorno capirò come funziona ...


6

Python 3, 50 byte

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

Il file deve essere creato utilizzando la codifica CP862 o invertendo il seguente hexdump.

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

Probabilmente questo potrebbe essere portato su Python 2 (salvando così due byte), ma mi manca la localizzazione corretta per testarlo. Python 3 stampa diligentemente una versione codificata UTF-8 (o qualunque cosa sia appropriata per la locale corrente) dell'alfabeto.

Verifica

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

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

Provalo online!

Come funziona

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 byte

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

Questo codice è lungo 182 byte e ho aggiunto 4 byte per due flag della riga di comando: -re-u

Provalo online!

Mille grazie a @Neil per questo fantastico metagolfer intero che ha creato questo dolce modo di spingere 1488 (il punto di codice del primo carattere)

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

Spiegazione:

Spingere un gran numero di scosse cerebrali è relativamente difficile. Tuttavia, dal momento che l'atto di spingere un numero corrisponde anche a quel numero, possiamo spingere più numeri contemporaneamente per un notevole risparmio di byte. Ecco un esempio più concreto. La parte più interna (che ho scritto sopra) nel codice psuedo è

push(1488)

Questa espressione restituisce 1488, quindi avvolgiamo il tutto in un'altra istruzione push:

push(push(1488) + 1)

Questo spinge il 1488 e il 1489, oltre a valutare il 1489. Quindi concludiamo questo:

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

che spinge 1488, 1489 e 1490, oltre a valutare fino a 1490. Ripetere questo passaggio per ciascun numero che è necessario spingere.

Tuttavia, poiché gli incrementi non sono sempre 1, è un po 'più complicato di così. Ecco una versione più leggibile:

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

Ho pensato che fosse +1 -rperché -non conta
NoOneIsHere

6
@NoOneIsHere -non conta se è già presente da un'altra opzione (ad es. In perl -e). Brain-Flak non ha un'opzione del genere, quindi -l'opzione e lo spazio contano per il totale.
Riley,

Solo un piccolo miglioramento ho fatto brain-flak.tryitonline.net/…
Wheat Wizard

@WheatWizard Se dovessi prenderlo, non sarei in grado di scrivere una spiegazione. Mi sembra solo un pasticcio confuso di parentesi. : P
DJMcMayhem

È un cambiamento molto piccolo. Ho appena spostato le due istanze ()()()all'inizio e le ho messe su e giù.
Wheat Wizard

4

/// , 27 byte

ABCDEFGHIQSRTVUXWYbdcfeghiq

Provalo online!

L'output è codificato in CP424 .

Per verificarlo tu stesso:

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

Che tipo di codice è questo? Penso che debba comunque essere convertito in UTF-8 per scopi di visualizzazione. Non che sia necessariamente non valido: P ha un +1
Erik the Outgolfer

@EriktheGolfer Non è necessario convertirlo in UTF-8. Questo non è un requisito da nessuna parte nella sfida.
Mego

Penso che potresti attirare voti negativi allora. Tieni presente che al posto tuo avrei incluso la versione UTF-8 e un hexdump dell'originale ...
Erik the Outgolfer,

4

JavaScript (ES6), 59 byte

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

Il meglio che potevo fare in ASCII era 80 79 78 byte:

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

Se una matrice di caratteri è accettabile, 75 byte:

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

Modifica: salvato alcuni byte grazie a @IsmaelMiguel. Salvato un altro byte grazie a @ETHproductions. Se si utilizza Firefox 30-57, è possibile salvare altri 2 byte grazie a @ETHproductions utilizzando la comprensione del generatore o dell'array:

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

Puoi salvare un byte sulla tua alternativa ASCII usando 0x377BABBCF7F.toString(3). Combinando questo con .map(), puoi fare _=>0x377BABBCF7F.toString(3,n=1488).split``.map(_=>String.fromCharCode(++n-_))per 78 byte. Restituisce una matrice di caratteri.
Ismael Miguel,

@IsmaelMiguel Bello prendere il ..ma non usiamo splitqui.
Neil,

Bello. È possibile modificare leggermente la versione char-array per ottenere _=>String.fromCharCode(...[...0x377babbcf7f.toString(3)].map(c=>++n-c,n=1488))1 byte in meno rispetto agli attuali 79 byte.
ETHproductions

@ETHproductions Bah, con cui avevo giocato String.fromCharCode(...)e sono riuscito a convincermi che sarebbe sempre stato più lungo. In effetti salva 4 byte sulla mia soluzione di base 2 (che è ancora 84 byte perché ci vogliono più byte per decodificare).
Neil,

Se si desidera utilizzare la comprensione dell'array, è possibile ottenere 2 byte di sconto da ciascuno; 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 byte

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

Provalo online!

-1 byte grazie a Emigna + 28 byte grazie a DJMCMayhem;).


4
Non so cosa usi la codifica 05AB1E, ma dubito fortemente che si tratti di caratteri a un byte in qualunque cosa sia.
DJMcMayhem

@DJMcMayhem Penso che TIO abbia un bug, quei personaggi non esistono nel CP-1252.
Erik the Outgolfer,

@EriktheGolfer Molto probabilmente utilizza UTF-8 per comodità e quindi l'interprete 05AB1E esegue la conversione interna necessaria. Questo è quello che faccio per V (che usa latin1).
DJMcMayhem

@DJMcMayhem Qui viene mostrato come UTF-8 penso, ma supporta anche CP-1252, che puoi usare per ridurre il numero di byte. Questo non è puro CP-1252, tuttavia, quindi deve essere eseguito con stringhe UTF-8.
Erik the Outgolfer,


2

Scala / Groovy / Python 3, 9 caratteri ASCII + 27 caratteri a 2 byte = 63 byte

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

assumendo UTF-8

Scala, 59 byte

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

x+1423 equivale a x-'A'+1488


Polygot, funziona anche in Groovy; inoltre, vedi la mia risposta, bytecount è disattivato.
Magic Octopus Urn,

1
anche in Python 3 (anche Python 2 ma non sono necessarie le parentesi)
user49822

1
@caruscomputing Starei attento a modificare il conteggio dei byte di un altro utente perché presumi una certa codifica. Sei sicuro che Scala può o può gestire solo UTF-8? Inoltre, l'alfabeto ebraico ha 27 lettere, quindi 61 è sbagliato in un modo o nell'altro.
Dennis,

La prima opzione funziona anche su PHP.
Ismael Miguel,


1

C # 6 +, 76 86 82 byte

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

Primo tentativo di golf. Lo sto facendo bene?

EDIT : +6 byte per dimenticare di racchiuderlo in una funzione. Grazie @Kevin

C # 5 e versione precedente, 86 82 byte

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

In realtà, è necessario stampare una funzione o un programma completo. Cosìvoid F(){Console.WriteLine("אבגדהוזחטיכךלמםנןסעפףצץקרשת");} sarebbe valido, o ()=>{Console.WriteLine("אבגדהוזחטיכךלמםנןסעפףצץקרשת");}anche io penso (non sono sicuro di quest'ultimo, però). Inoltre, puoi giocare a golf usando .Writeinvece di .WriteLine. :) Detto questo, benvenuto in PPCG! Potresti trovare interessanti suggerimenti per giocare a golf in C # . Goditi la permanenza.
Kevin Cruijssen,

Sai, puoi usare <s>your text</s> per barrare del testo invece di usare caratteri strani.
Erik the Outgolfer,

Non ne ero a conoscenza. Comunque grazie @EriktheGolfer
terribile programmatore


1

ArnoldC, 112 byte

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

1

Keg , 34 byte

Ispirato da una soluzione Powershell.

ZYXVWTUSRPQNOMKLJIHGFEDCBA(֏+")(,

TIO


0

BaCon , 57 byte

  • Nella maggior parte dei BASIC, il punto interrogativo rappresenta semplicemente STAMPA.

  • A prima vista, la soluzione seguente sembra 30 byte, ma i caratteri ebraici necessitano di 2 byte di memoria a causa di UTF-8. Quindi ci sono 27 caratteri x 2 byte + 1 byte per il '?' e 2 byte per le doppie virgolette = 57 byte.

Soluzione:

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

Prova GW-BASIC con un BIOS VGA CP862 per 30. (Stesso testo)
Joshua,

0

gergo , 59 byte

Risposta davvero semplice ...

t[][אבגדהוזחטיכךלמםנןסעפףצץקרשת]
  • t - funzione di sostituzione (sostituisce "niente" nell'input con l'alfabeto ...)

Provalo qui


0

zsh, 25 21 byte

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

Il mio browser lo sta incasinando: il ת dovrebbe essere la prima lettera, quindi il א. Se si incolla altrove, tuttavia, dovrebbe funzionare. La vecchia versione:

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

Non valido, poiché le lettere finali e le lettere normali sono invertite in Unicode
TuxCrafting il

Inoltre, in realtà sono 27 byte
TuxCrafting

Oh, e l'intervallo dovrebbe essere effettivamente aleph prima e tav last. Se la stringa è invertita nella domanda, è perché l'ebraico è un linguaggio RTL
TuxCrafting

@ TùxCräftîñg nel mio terminale, viene visualizzato correttamente solo prima con un ultimo. Cosa intendi con "le lettere finali e le lettere normali sono invertite in Unicode"?
Elronnd,

Nel testo nella domanda c'è כךad esempio (prima kaf normale, seconda kaf finale), ma in Unicode le lettere finali sono prima delle lettere normali ( ךכ), quindi il testo stampato non è valido. E se viene visualizzato prima con tav, è perché l'ebraico è un linguaggio RTL, quindi il primo carattere viene visualizzato
all'estrema

0

Java 7, 85 byte

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

Non mi preoccuperò nemmeno di pubblicare il codice di prova o un "Provalo qui" come faccio di solito ..


0

Perl 6 (74)

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



0

C, 49 byte

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

Alcuni utenti potrebbero dover chiamare setlocaleprima di utilizzare questo, ma ha funzionato bene per me.


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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.