Il mondo Hello più corto selezionato


27

Scrivi un programma che non accetta input e stampa Hello, World!su stdout o l'alternativa più vicina alla tua lingua. Il problema è che ogni riga del programma deve contenere solo caratteri ASCII stampabili e deve essere in ordine lessicografico, ovvero ordinata.

Ecco tutti i 95 caratteri ASCII stampabili in ordine:

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

Quindi, ad esempio, la riga non !!A0~sarebbe valida perché Ae 0sono fuori servizio. La linea !!0A~sarebbe valida.

Ogni riga nel tuo programma può essere di qualsiasi lunghezza e può esserci un numero qualsiasi di righe. Le righe vuote sono considerate ordinate. Ognuna delle nuove righe del programma deve essere la stessa (nessuna miscelazione \ne \r\n). Le schede e altri caratteri ASCII non stampabili sono vietati.

A grande richiesta , le condizioni di vittoria sono state cambiate: vince
l'invio con il minor numero di righe . Tiebreaker passa al programma più breve (le nuove righe contano come singoli caratteri).

Hello, World!Dovrebbero essere prodotti solo e una nuova riga finale facoltativa. Si noti che HQ9 + non è valido poiché emette hello, world. Posso vietare lingue simili a HQ9 + che hanno un carattere "Ciao, mondo!" comandi a causa della loro banalità.

Suggerimento:

Questo è sicuramente possibile in unario e Lenguage , anche se non molto conciso.


7
È un po 'tardi ora, ma in qualche modo mi sento come meno righe e meno byte potrebbe essere stato più interessante ...
Sp3000

6
@ Sp3000 Avremmo bisogno di una misura combinata, altrimenti Unary e Lenguage significherebbe che solo 1-lineers potrebbe competere.
isaacg,

@ Sp3000 Forse, volevo solo assicurarmi che Unary / Lenguage non avrebbero vinto. Sono aperto a cambiarlo però (mi dispiace isaacg). Valuta il commento di Sp se sei d'accordo.
Calvin's Hobbies,

@ Sp3000 Ho seguito il tuo consiglio. Vedi gli aggiornamenti.
Hobby di Calvin,

L'ordine può essere invertito? Ad esempio, leggere da sinistra a destra?
Ismael Miguel,

Risposte:


17

Headsecks , 1 riga, 366 byte

                                                                        $(((((((((((((((((((((((((((((,000000044888<AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIIIIIIIIIIIILPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTXXXXXXXXXXXXXXXXXXXXXXXX\```diiiiiilqqqqqqqqtyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy|

Headsecks è una banale sostituzione di Brainfuck in cui l'unica cosa che conta è il punto di codice modulo 8. L'equivalente Brainfuck è semplicemente

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++.+++++++..+++.-------------------------------------------------------------------.------------.+++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++.+++.------.--------.-------------------------------------------------------------------.

Fortunatamente questo approccio ingenuo appena si inserisce. C'è qualche potenziale per giocare a golf in byte, ma potrebbe essere difficile.

Testato usando questo interprete Python .


Generazione di codice

code = "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++.+++++++..+++.-------------------------------------------------------------------.------------.+++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++.+++.------.--------.-------------------------------------------------------------------."
command_map = "+-<>.,[]"

last_point = 32
out = []

for char in code:
    curr_mod = command_map.index(char)
    last_mod = last_point % 8

    if curr_mod > last_mod:
        last_point += curr_mod - last_mod

    elif curr_mod < last_mod:
        last_point += (8 - last_mod) + curr_mod

    out.append(chr(last_point))

print("".join(out))

È stato intelligente! +1
theonlygusti

Potresti usare un programma BF più breve o il programma è stato costruito in un modo specifico per un motivo? Ho provato il mio programma BF che ho usato nel tuo generatore, ma l'output includeva un po 'di Unicode.
mbomb007,

1
@ mbomb007 Il problema con i programmi BF più brevi è che anche questo metodo ingenuo termina al punto di codice 124, quindi non credo che ci sia abbastanza spazio per introdurre nuovi caratteri ...
Sp3000

30

/// , 7 righe, 22 byte

/
//Hello
,
 Wor
l
d
!

Una rara possibilità che /// sia competitivo (purché nessuno inizi con Unary e Lenguage ...).

Il codice incontra prima un /, e analizza il

/
//

come istruzione sostitutiva che rimuove tutte le nuove righe dal resto del programma. Successivamente, il programma legge semplicemente

Hello, World!

che viene stampato alla lettera in quanto non contiene ulteriori barre.


19
Non mi ero nemmeno reso conto che gli URL potessero contenere così tante barre di fila.
Alex A.

4
@AlexA. Ci sono voluti mesi per far funzionare quell'URL, IIRC. Abbiamo dovuto continuare a rinominare l'articolo per gestire le modifiche alla configurazione del server e alla configurazione di MediaWiki.

17

JavaScript (67 66 62 linee, 227 269 ​​byte)

(Nota: testato solo su Firefox 36 e Safari 8, contiene funzioni ES6 minori (la Setclasse))

Z
=
!""+
(0[[]]
+
(
!!""+Set
));c
=Z[~
-22]
$=Z[
3]
$$=Z[
15]
$$$=Z[
24]
$$$$=Z[
1]
$$$$$=Z[
0]
Set
[c
+
$$$+Z[
5]
+Z[
16]
+
$$$$$+
$$$$+Z[
2]
+c
+
$$$$$+
$$$+
$$$$]
(Z[
14]
+
$$+
$+
$$$$+
$$$$$+
"(\
'H\
"+
$+
$$+
$$+
$$$+
",\
 W\
"+
$$$+
$$$$+
$$+Z[
6]
+
"\
!')\
")
()

Il codice sopra sostanzialmente fa:

alert("Hello, World!")

Ovviamente alertnon è ordinato. Quindi, invece, dobbiamo generare l'istruzione come stringa e "valutarla":

s = "alert('Hello, World!')";   // generate this using sorted code
eval(s)

Come generare la stringa? ES5 supporta la continuazione della linea in questo modo

"AL\
ERT" === "ALERT"

Ma il codice carattere \appare prima di tutte le lettere minuscole, quindi dobbiamo generare le lettere minuscole usando altri metodi.

Prendiamo in prestito un'idea di JSFuck qui. Le lettere minuscole coinvolte nelle dichiarazioni di allarme sono:

t e r a o l d

tutti questi possono essere estratti da caratteri di oggetti standard, che possono essere espressi in termini di una sequenza ordinata:

t, e, r ← true      = !""
a, l    ← false     = !!""
o       ← function  = Set
d       ← undefined = 0[[]]

Come valutiamo la stringa? Sicuramente non possiamo usare in eval(s)quanto non è ordinato. In alternativa, potremmo usare Function(s)(), ma non possiamo usare in Functionquanto non è ordinato neanche. Tuttavia, Functionè il costruttore di tutte le funzioni, il che significa Set.constructor === Function.

L'aggiunta dell'identificatore constructorfa diventare l'elenco delle lettere minuscole:

t e r a o l d c u n s

che per fortuna potrebbe ancora essere generato da "truefalseundefinedfunction":

t, e, r, u ← true      = !""
a, l, s    ← false     = !!""
o, c, n    ← function  = Set
d          ← undefined = 0[[]]

Dopo la preimpostazione, il codice sopra dovrebbe essere simile a:

// lines 1~8 defines our string containing all lowercase letters we want
Z = true + (undefined + (false + Set))
// Z = "trueundefinedfalsefunction Set() { [native code] }"

// lines 8~20 defines the variables `c`, `$` (e), `$$` (l), `$$$` (o), 
// `$$$$` (r), `$$$$$` (t)
// for the corresponding lowercase letters extracted from `Z`

// the rest calls:
Set["constructor"]("alert('Hello, World')")()
// lines 22~36 generates the "constructor" string
// lines 37~61 generates the "alert('Hello, World')" string

Aggiornamento: Rinominato E, L, O, R, Ta vari ripetizione $per ridurre le 4 linee.


2
Assolutamente brillante! Sicuramente non so se questo è possibile utilizzare lo stesso tempo di strategia in Python (è case sensitive).
mbomb007,

Molto bella! Si noti che =Z[3*7]può essere scritto come =Z[~-22]se fosse necessaria solo un'interruzione di riga anziché due.
io e il mio gatto il

@ mbomb007 Sì, ma gli spazi sono e sono i primi nel set ASCII ...
Harry Beadle

@meandmycat Grazie! Aggiornato.
kennytm,

13

Insonnia , 4 linee, 59 byte

 FFFFGjnnnnooty
FLLddeejkopqyyyyy~~
(<ddjnoppppqrtu
<<Fddfj

Questo programma viene generato ottimizzando il conteggio delle righe.

10 linee, 43 byte

(u
pt
(dppty
p~
j
<Fptt{
(otz
?o
FLu
<?FFu~

Questo programma sopra è generato ottimizzando il conteggio dei byte.


11

Cygwin bash, 16 linee, 60 byte

Questo funziona solo a causa del nome del file senza distinzione tra maiuscole e minuscole su Windows e del fatto che Cygwin cerca le utilità senza distinzione tra maiuscole e minuscole anche se non lo si imposta per riconoscere il percorso senza distinzione tra maiuscole e minuscole.

A\
=Hello
A\
+=\
",
"Wor
A\
+=l
A\
+=d
A\
+=\
!
E\
CHO\
 $A

Prendi nota di ciò ECHOalla fine.


Non sono sicuro che si tratti di 17 o 16 righe (c'è una nuova riga alla fine), ma in entrambi i casi, questo non vincerà nulla.
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

Hai vinto 10 voti, già molto. I più votati (per ora) hanno 12 voti! E la soluzione /// con 23 voti positivi.
Ismael Miguel,

11

> <> , 6 righe, 111 byte

  """""""/;;Hello
        &\o
      &++\oooo~~
"++++++++\bbbdlr
    +++++\ccccccccfooo}
    $++66\cfffffooooopr

Ho problemi a giocare a golf con una linea in più, ma in ogni caso sono felice di aver battuto il metodo a 7 linee.

Spiegazione

> <> è un linguaggio 2D basato su stack in cui le istruzioni sono caratteri singoli e il flusso del programma può essere su, giù, sinistra o destra. L' "istruzione attiva o disattiva l'analisi delle stringhe, spingendo i caratteri fino a quando non "viene raggiunta una chiusura , ma a causa della natura di> <> non esiste una cosa come "analisi di stringhe a più righe" come con le stringhe di CJam o le stringhe a tre punte di Python. Questo si è rivelato un grosso problema perché non è permesso iniziare e terminare una riga con a "e avere altri caratteri tra (es. "some chars")!

Nota che /e \rifletti il ​​flusso del programma, quindi eseguiamo effettivamente la prima riga e poi tutte le righe in ordine inverso, e la maggior parte delle righe vengono effettivamente eseguite al contrario!

[Line 1]

""""""              Three empty strings, push nothing
"/;;Hello  "        Push "/;;Hello  ". Note the wrapping - ><> is toroidal!
""""""              Three empty strings, push nothing

[Line 6]
66++$               Turn the top " " into "," by adding 12, then swap top two
rp                  Reverse stack and pop top 3
ooooo               Print "Hello", stack is now " ,"
fffffc              Push some 15s and a 12

[Line 5]
+++++               Sum the 15s and 12 to give 87, or "W"
}ooo                Move "W" to the back and output ", W"
fcccccccc           Push a 15 and some 12s

[Line 4]
++++++++            Sum the 15 and 12s to give 111, or "o"
"rldbbb\++++++++"   Push chars to stack
r                   Reverse stack
ld                  Push length of stack and 13, not used
bbb                 Push three 11s

[Line 3]
++&                 Sum the 11s to give 33, or "!" and put in register
~~                  Pop top two
oooo                Print "orld"

[Line 2]
&                   Put "!" from register to stack
o                   Print "!"

[Line 1]
;                   Terminate

In una nota a margine, ecco un divertente tentativo di un> <> minimo byte (23 righe, 47 byte):

v
"
!
d
l
r
o
W

,
o
l
l
e
H
"
/<
l
?
!
;
o
\^

2
Nel secondo codice è possibile salvare 2 byte grazie al
riavvolgimento

10

CJam, 5 4 righe, 162 byte

"Hello
")))))))))))))))))))))))))))))))))))68S\cel
"Wor
")))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))@SX\c|

Stesso numero di linee di Insomnia! (ma molti più byte)

Provalo online .

Spiegazione

"Hello\n"        Push "Hello" and a newline
)                Uncons the newline
)))...)))        Increment the newline into a ","
68S\             Push 68 and a space then swap, leaving 68 on top
c                Convert 68 into a char "D"
el               Lowercase "D" into "d"
"Wor\n"          Push "Wor" and a newline
)                Uncons the newline
)))...)))        Increment the newline into an "l"
@                Rotate top three elements, moving the "d" to the top
SX\              Push a space and 1 then swap, leaving the space on top
c                Convert the space (which is an array) into a char
|                Bitwise or the space (32) with 1 to give "!" (33)    

CJam stampa automaticamente la pila in seguito.

Grazie a @Optimizer per avermi ricordato che Scfunziona, perché altrimenti SX|fallisce (fa una setwise o invece, dando l'array costituito da uno spazio e 1).


8

> <> (Fish) , 5 righe, molti byte

Il codice è estremamente lungo, quando dico [6535529689086686142930090 '+' signs]e [6535529689086686142930090 'd' characters]nella prima riga del codice, intendo che ci sono letteralmente 6535529689086686142930090più segni in una riga!

(E per le seguenti righe aggiungere gli spazi prefisso necessari.)

'[6535529689086686142930090 '+' signs]^`[6535529689086686142930090 'd' characters]
                                   **,/288
                                     -/:o
                             %**288:;?\
                                   (1:\

Un'alternativa più breve verificabile che stampa solo Hi:

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++^`hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
                                                                                                                               **,/288
                                                                                                                                 -/:o
                                                                                                                         %**288:;?\
                                                                                                                               (1:\

Metodo:

  • Nella prima riga creiamo un numero enorme che rappresenta la stringa in base128.
  • Nel resto delle righe (andando dal basso verso l'alto) stampiamo il seguente carattere in ogni ciclo fino a quando il valore dell'intero non raggiunge 0.
  • Il codice di looping è :1(?;:882**%:o-288**,.

(Con questo metodo possiamo stampare stringhe arbitrarie di 2+ caratteri.)


Non è una soluzione valida; 6535529689086686142930090 non è stato ordinato.
theonlygusti,

@theonlygusti "Il codice è estremamente lungo, interpretato [6535529689086686142930090 '+' signs]e [6535529689086686142930090 'd' characters]letteralmente nella prima riga del codice." (Se non è chiaro cosa intendo con questo, controlla il secondo pezzo di codice.)
randomra

Oh ok! Scusa, sciocco me: PI l'ha preso alla lettera.
theonlygusti,

2
La dimensione è di 13 YB, circa 1000 volte la dimensione di Internet.
Charles

@Charles ottengo ~ 40YB comprese le ultime righe.
Veedrac,

8

PHP (7/17 righe, 36/59 byte):

A causa della quantità di risposte non valide, ho riscritto questa risposta.

La versione del browser? Andato.

Ma ho 2 soluzioni, entrambe basate su bitwise xor( ^) di stringhe in PHP.

Questa è una soluzione estremamente potente! A volte, consente di risparmiare molti byte.

Innanzitutto, la risposta più breve:

Echo
Hello
,AM^mm
,Wor
,OOO^
"#+n
";

Lo so, sembra orribile, ma funziona!

Il prossimo dipende dalle nuove righe.

Sì, utilizza newline ( \nè richiesto lo stile / UNIX)!

Echo
Bo
.ff
.e
.
"&*]ex
fn
"^
"\n
\n
\n
\n
\n
\n
\n
",B^c
;

Le newline su questo sono necessarie per funzionare.

Non è perfetto, ma funziona!


Entrambe le risposte sono basate su @ MartinBüttner 's soluzione :

Echo
Hello
.
chr
(44
).
chr
(29
+3
).Wor
.l
.d
."!
";

Un ringraziamento speciale a @ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ , @CJDennis , @ MartinBüttner e @skagedal per aver rilevato tutti i miei errori e per i loro suggerimenti.


1
L'output nel browser è Hello , Wor l d !. Nota gli spazi extra! Questa non è una risposta valida, sfortunatamente.
CJ Dennis,

1
Testato su Firefox 36, IE 8, Opera 12.17 e Opera 28 (Chromium) su Windows XP. Tutti hanno reso l'output in modo identico. Poiché un numero qualsiasi di caratteri di spazi bianchi viene visualizzato come un singolo carattere di spazio (salvo spazio di interruzione, ecc.) Ogni nuova riga viene convertita in uno spazio. Sarei interessato a sapere se un browser esegue il rendering dell'output senza spazi!
CJ Dennis,

1
Bel abuso della lingua! Dato che gli errori che genera tecnicamente vanno a stderr e non a stdout, il tuo codice è ora valido anche se nel mio caso vedo molti errori nel mio browser! E, incredibilmente schizzinoso, la mia configurazione di PHP ha tag corti disattivati, quindi la prima riga sul mio computer è <?phpche non è valida! Tuttavia, ti perdonerò per questo! OK, <?Phpho appena testato quale funziona, quindi ho appena imparato che il tag di inizio non fa distinzione tra maiuscole e minuscole!
CJ Dennis,

1
Le prime due soluzioni in questa risposta non seguono le regole. Quello in alto ha, come linea 8,. "!<br- questo non è ordinato. Il secondo ha come linea 10: ."!- non ordinato.
skagedal

1
@IsmaelMiguel Mi dispiace, ma no. La riga 7 del primo suggerimento non è ordinata. Le righe 5 e 7 del secondo suggerimento non sono ordinate.
skagedal

7

Pyth, 7 linee, 23 byte

-
"Hello
,
 Wor
l
d
!"b

Abbastanza semplice, basta usare una stringa multilinea e rimuovere le nuove righe.

Provalo qui.


@orlp Ho aggiunto stringhe multilinea qualche giorno fa e Pyth ha avuto il supporto per le nuove righe nell'input per anni. Questo non usa affatto la modalità multilinea. Provalo sul compilatore online, che sicuramente non ha modalità multilinea.
isaacg,

2
È quasi lo stesso in CJam, con lo stesso numero di byte.
Ottimizzatore

4

Avanti, 41 linee, 143 byte

Provalo online.

Ne sono molto orgoglioso. L'ho tirato fuori abbastanza rapidamente una volta scoperto che potevo farlo, avendo Google cercato lingue senza distinzione tra maiuscole e minuscole, e conosco già Forth decentemente. Può quasi sicuramente essere abbreviato, sia byte che righe. I suggerimenti sono apprezzati. : D

Questo programma spinge essenzialmente il valore decimale di ciascun carattere ASCII, quindi stampa ciascuno di essi. Ho provato a ottimizzare mentre l'ho scritto, quindi è meno leggibile di quanto mi piacerebbe.

33
99
1
+
DUp
8
+
2DUp
6
+
SWap
11
+
2OVer
SWap
8
9
*
EMit
1
+
EMit
DUp
DUp
EMit
EMit
3
+
EMit
29
3
2DUp
+
EMit
*
EMit
EMit
EMit
EMit
EMit
EMit

Le Emitlinee non funzionano, poiché i(105) è inferiore a m(109).
bcsb1001

Dovrebbe essere "EMit", allora?
skagedal,

4

Marbelous, 9 righe, 94 byte

3333
    @ADD
    358C
++--29\\
++--3555DE
<<<<<<>>~~
+++++446666D
++++++++../\
      ++------

Provalo online qui. Using spaces for blank cellsdeve essere controllato.

Rappresentazione visiva della fonte:

Rappresentazione visiva della fonte sopra

Spiegazione: Ogni valore esadecimale in questo programma si sposta verso il basso di ogni "segno di spunta" (a meno che non sia attivo \\, nel qual caso si sposta a destra). ++incrementerà il valore, --decrementerà, ~~applicherà un non bit a bit, ecc. I valori che cadono dal fondo vengono stampati come caratteri ASCII.

Ad esempio: L' 33angolo in alto diventa (((0x33 +1 +1) << 1) +1 +1 = 0x6C (l).


2

Perl, 17 righe

$_
=
'pr
int
"Hello
,
 Wor
l
d
!"';s
!
!!g
;s
!.
*
!$&
!eex

2

Rebol - 15 linee (51 byte)

PRin
AJOin
[
'Hello
Sp 
+
12
Sp
'Wor
'l
'd
Sp
+
1
]

Parole Rebol sono case-insensitive (ad es. PRINT, PrintE printsarebbero tutti chiamare la stessa funzione).

Il codice sopra riordinato:

prin ajoin [
    'Hello  sp + 12  sp  'Wor  'l  'd  sp + 1
]

NB. sprestituisce il carattere spaziale !


Il tuo programma non è valido, {non può essere prima di qualsiasi lettera.
theonlygusti,

@theonlygusti - Risolto (passato da 9 righe a 13). L'unica linea che mi ha causato un problema è stata {,}. Questo è ora Sp + 12(su 3 righe) che equivale al carattere spazio + 12 (cioè virgola)
draegtun

2

Unario , 1 riga, molti byte

Ogni personaggio di questo programma è 0 . La fonte è troppo lunga per essere inserita qui, ma è composta da una stringa di tanti zeri:

327380789025192647555922325233404088310881092761595127419003295178342329930050528932118548

Questa è la rappresentazione decimale per questo numero binario:

0b1010010010010010010010010110000010010010010110000010010000010010010000010010010000010001001001001011111000010000010000011110001111001011111000000100000011011011100010010010010010010010100100010010010100000000100001011100001100010010010100011011011011011011100011011011011011011011011100000000010100

Che è stato creato da questo programma BrainF ***:

++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>-[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.

Guarda come l'ho generato: http://ideone.com/lMT40p


2

Lotto - 39 righe (202 byte)

Volevo ridurre le dimensioni abilitando l'espansione ritardata eseguendo il codice all'interno di una cmdchiamata utilizzando l' /v oninterruttore, ma non sono riuscito a superare tutti i carati.

@S^
ET^
LO^
C^
AL^
 EN^
ABL^
E^
DEL^
AY^
E^
DEX^
P^
ANS^
IO^
N
@S^
ET^
 0=Hello
@S^
ET^
 1=^
,^
 Wor
@S^
ET^
 2=l
@S^
ET^
 3=d
@E^
CHO^
 !^
0^
!!1^
!!2^
!!3^
!^^^
!

Senza le nuove linee (e carati per sfuggire alle nuove linee):

@SETLOCAL ENABLEDELAYEDEXPANSION
@SET 0=Hello
@SET 1=, Wor
@SET 2=l
@SET 3=d
@ECHO !0!!1!!2!!3!^^!

1

Rubino, 19 righe, 95 byte

$;=
$>
$;<<
:Hello
$;<<
44::chr
$.=
33::
-1
$;<<
$.::chr
$;<<
:Wor
$;<<
:l
$;<<
:d
$;<<
33::chr

Forse la seconda restrizione di codice più difficile per Ruby che ho visto su questo sito, dopo la mostruosità qui .

Modifica per spiegazione: l'unico metodo di output di Ruby che è stato ordinato è il <<metodo su STDOUT. Sfortunatamente, la costante per STDOUT è $>, ed >è ASCII superiore rispetto alla maggior parte dei simboli, quindi non è davvero possibile chiamare un metodo su di esso. Abbiamo bisogno di un'istruzione di assegnazione su più righe per inserirla in un nome di variabile più tracciabile,$; (il punto e virgola è ancora piuttosto elevato, ma la maggior parte delle variabili di questo modulo sono non assegnabili o possono essere solo stringhe).

I simboli ( :Wor, ecc.) Sono il modo più semplice per eseguire un valore letterale e non vedo un modo per rimuovere le righe da una stringa, quindi ho bisogno di più istruzioni di stampa. Lo spazio e la punteggiatura non possono andare in un simbolo letterale, ma per fortuna il chrmetodo sui numeri è legale, quindi posso ottenere un carattere dal suo valore ASCII. ::è un modo alternativo di chiamare metodi. Lo spazio è complicato perché non riesco a scrivere 32, quindi sottraggo 1 da 33 e lo assegno a una variabile.


0

Retina, 12 linee, 29 byte (non concorrenti)

La lingua è più recente della sfida.


Hello
$
,
$
 Wor
$
l
$
d
$
!

Provalo online

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.