Stampa “N NE E SE S SW W NW”


47

Questo sembra quasi banale, ma poiché dopo qualche sforzo non sono riuscito a battere la soluzione letterale in J, ho pensato che potesse essere una sfida decente (anche se, per essere chiari, questa non è una sfida specifica per J).

Il titolo dice tutto. Devi semplicemente scrivere un programma o una funzione (senza argomenti) che ritorna o stampa:

N NE E SE S SW W NW

È possibile utilizzare le nuove righe al posto degli spazi.

Una funzione senza argomento che restituisce una matrice di stringhe come

['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW']

è anche accettabile.

Le lettere possono essere in maiuscolo o minuscolo, ma non possono essere mescolate.


9
Forse consentire loro di essere emessi in qualsiasi ordine sarebbe leggermente più interessante
Jo King il

3
@JoKing Certo, lo rimuoverò. Onestamente, non mi aspettavo che qualcuno potesse inviare risposte che utilizzavano l'intero valore letterale - non è nello spirito della domanda. Come ho affermato, è emerso perché non ero in grado di battere il letterale in J, nonostante la stringa avesse regolarità e struttura di una sorta. Il punto è sfruttare questa regolarità per battere una risposta letterale. Male su di me per non essere più esplicito. Consentire loro anche qualsiasi ordine lo sconfigge, quindi non voglio fare quel cambiamento.
Giona

3
@UnrelatedString L'idea più promettente che ho avuto è notare che le indicazioni corrispondono a Ho sollevato ai poteri 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5. Sfortunatamente il codice J richiesto per mappare quei risultati in lettere ha finito per essere più costoso di un letterale.
Giona il

1
Ah, intelligente! Mi chiedo se la mappatura potrebbe funzionare meglio per gli interi gaussiani, 1, 1+i, i, -1+i, -1, -1-i, -i, 1-iquindi hai una parte reale o immaginaria per direzione cardinale invece di due. Probabilmente è più difficile generarli però, a meno che non ci sia un modo per aggirare quei poteri di me lontano da 0? Non so quanto sarebbe facile o difficile in J, ma è un'idea.
Unrelated String

3
Sembra che le voci dovrebbero anche mostrare l'ingenua versione "echo this string" nella loro lingua per il confronto, e giudicare da abbreviare%?
Dewi Morgan,

Risposte:


18

Tela , 12 byte

>X½+T)AuS{⁹‟

Provalo qui!

La stringa, semplicemente compressa.


2
Puoi spiegare come funziona in modo un po 'più dettagliato?
Dillanm,

2
@Dillanm non c'è molto altro da dire - Canvas ha un compressore integrato (dovrebbe essere accessibile con ctrl + o → comprimere le stringhe) che, qui, memorizza semplicemente i caratteri necessari ( "NESW ") e quindi in base-5 memorizza l'individuo personaggi.
dzaima,

56

bash (24 byte)

usando l'espansione del controvento

echo N {N,,S}E S {S,,N}W

ha la stessa lunghezza della codifica hard

echo N NE E SE S SW W NW

tuttavia diventa più interessante quando si generano più punti cardinali

echo N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW

espansione parentesi graffa

echo N {{N,,E}N,,{E,,S}S}E S {{S,,W}S,,{W,,N}N}W

in caso contrario, se l'ordine potesse essere modificato, (17 byte), il trucco è che senza virgolette il parametro empy string scompare

echo {N,,S}{W,,E}

1
Questo è interessante, non sapevo che potresti avere una posizione vuota è l'espressione del tutore!
flawr

1
@flawr Utile quando chrooting:mount -t proc{,,}
gronostaj

7
Oppurecp file{,.bak}
Oliphaunt il

43

Mornington Crescent , 4395 3823 byte

Take Northern Line to Bank
Take District Line to Parsons Green
Take District Line to Paddington
Take Bakerloo Line to North Wembley
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Barbican
Take Circle Line to Bank
Take Circle Line to Aldgate
Take Circle Line to Embankment
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Bayswater
Take Circle Line to Hammersmith
Take Circle Line to Baker Street
Take Circle Line to Bank
Take Circle Line to Embankment
Take Northern Line to Stockwell
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Farringdon
Take Circle Line to Hammersmith
Take Circle Line to Blackfriars
Take Circle Line to Bank
Take Circle Line to Moorgate
Take Northern Line to Waterloo
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Westminster
Take Circle Line to Hammersmith
Take Circle Line to Tower Hill
Take Circle Line to Bank
Take Circle Line to Edgware Road
Take Circle Line to Liverpool Street
Take Central Line to Mile End
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Circle Line to Victoria
Take District Line to Mile End
Take District Line to Bank
Take Circle Line to Bank
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Barbican
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bayswater
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Baker Street
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Farringdon
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Embankment
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Blackfriars
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Moorgate
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Westminster
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Tower Hill
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Aldgate
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Edgware Road
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Bank
Take Northern Line to Mornington Crescent

Provalo online!

Dal momento che è un po 'troppo aspettarsi che tu legga tutto ciò, lasciami dare una rapida panoramica del mio approccio. L'idea principale è quella di memorizzare 3 copie dei personaggi N, E, S, Win varie stazioni sulla linea Circle, tramite Bank - Hammersmith. Questi personaggi sono costruiti dall'inizio del nome di una stazione in Charing Cross. Quindi, costruisci   dal centro di un nome di stazione ben scelto usando Mile End e Charing Cross, e conservalo a Bank in modo che possa essere raccolto a Hammersmith nella concatenazione. Infine, concatena i personaggi uno a uno a Paddington, copiandoli di nuovo tramite Bank - Hammersmith se devono essere riutilizzati in seguito.


Penso che l'attuale soluzione sia abbastanza vicina all'ottimale con questa strategia, almeno in termini di numero di stazioni visitate: solo 2 volte ho usato una stazione solo per il transito:

  1. arrivare a Seven Sisters (tramite la stazione Victoria)
  2. e per tornare a Mornington Crescent (via Bank).

Tutte le altre visite alle stazioni erano, se non me ne dimenticavo, o la memorizzazione / il recupero di qualcosa di utile o (parte di) l'uso dell'abilità delle stazioni.

Per quanto riguarda le lunghezze delle linee, ho provato a scegliere i nomi più brevi su Circle Line, ma potrebbe esserci un piccolo miglioramento lì. È possibile che l'archiviazione di qualcosa nel Distretto possa radere qualche byte.


Due idee per giocare ancora un po 'a questo: 1. prendi' NE ',' SW ',' NW ',' SE 'da una singola stazione (usando ad es. NeAsden, Swiss Cottage, Acton To wne Mansion Hou se) 2. Prova a sfruttare il fatto che Paddington rende più facile concatenare "W" anziché W . Ciò richiede un po 'più di sovraccarico per "aggiornare" Paddington, quindi potrebbe non guadagnare nulla.
Lucertola discreta il

4
Questo utilizza le regole del loop Dollis Hill? In tal caso, penso che possa essere migliorato utilizzando una parabola di Argyle Street e forse anche una versione leggermente modificata del protocollo Webb-Ellis.
Richard Ward,


24

Brainfuck , 142 139 131 119 byte

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

Provalo online!

Effettua semplicemente un ciclo di 10 volte per riempire le celle con 30, 70, 80 e 90, quindi fai un passo indietro e avanti e regola i valori delle celle per stampare i caratteri richiesti. Non molto diverso dallo standard "Hello world!".


7
Lol Non ho mai capito come si possa "giocare a golf" con queste lingue oscure. È abbastanza difficile capire cosa fa il codice in primo luogo (si dice che provenga dal background C ++ / Java)
mackycheese21

10
@ mackycheese21 che cosa? Il C ++ non ti ha insegnato ad amare la manipolazione del puntatore?
candied_orange,

12
brainfuck potrebbe essere esoterico, ma di sicuro non lo definirei oscuro
Unrelated String

3
@candied_orange Il C ++ mi ha insegnato a odiare la manipolazione del puntatore e scappare ogni volta che qualcuno ha menzionato std :: :)
mackycheese21

1
@UnrelatedString oscuro, no. Ottuso, si.
Ricco del

14

Brain-Flak , 204 byte

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

Provalo online!


4
Punti detratti per il wrapping.
Ricco del

12

MarioLANG , 249 221 byte

+
+
+
+
+
+
+
+
+  ((+++++++++)))<
+>==============="
)++++++++)+++((-[!)--.)++.(.---------.).(.).)++.((.).).(.).++++.(.).(.(+++++++++.))
=================#================================================================.

Provalo online!



10

Formula Excel, 59 57 byte

È necessario immettere quanto segue come formula di matrice ( Ctrl+ Shift+ Enter):

=SUBSTITUTE(ADDRESS(1,{14,369,5,499,19,517,23,387},4),1,)

Dopo aver inserito la formula come formula di matrice, evidenziarla nella barra della formula e valutarla utilizzando F9per restituire il risultato, ad esempio:

Prima:
Before formula evaluation

Dopo:
Before formula evaluation

Come funziona

La ADDRESSfunzione restituisce una stringa che rappresenta un riferimento basato su due parametri rowe col. Il terzo parametro controlla quale tipo di riferimento viene restituito, un riferimento assoluto o relativo. Ad esempio, =ADDRESS(1,2,4)restituisce "B1".

Possiamo fornire un array ADDRESSe utilizzarlo come una formula di array per restituire più risultati, ad esempio i =ADDRESS(1,{1,2,3},4)ritorni "A1","B1","C1".

Pertanto, nella mia risposta, l'array fornito ADDRESSsono solo i numeri di colonna relativi ai punti bussola richiesti, ad esempio la colonna 14 è colonna N, la colonna 369 è colonna NE.

Tuttavia, non sono finiti qui dato che tutti i riferimenti restituiti hanno la fila incluso, per esempio, N1, NE1. Pertanto, utilizziamo semplicemente SUBSTITUTEper rimuovere il 1da tutti i riferimenti.


1
Sarebbe =IF(1,"N NE E SE S SW W NW")valido?
Ripristina Monica il

3
@quido Sì, lo sarebbe davvero! Tuttavia, stavo cercando un'alternativa che non richiedesse che la stringa fosse citata alla lettera.
i_saw_drones il

Come funziona?
Anatolyg

@anatolyg Ho aggiunto una sezione esplicativa, spero sia comprensibile.
i_saw_drones il


7

Carbone , 14 byte

”{⊟“�_Zn↖⦄RüΦ≦

Provalo online! Il collegamento è alla versione dettagliata del codice ... che è solo la stringa da stampare, poiché l'auto-deverbosifier si occupa della compressione della stringa.

La stampa della stringa non compressa richiede 19 byte, poiché Charcoal stampa letteralmente ASCII stampabile. La migliore risposta algoritmica che ho potuto trovare sfortunatamente richiede 20 byte:

E⁸ΦSNWE›³﹪⁻﹪⁺⁵×⁶μχι⁸

Provalo online! Output usando il formato array (costerebbe due byte per unire gli elementi negli spazi). Funziona notando che le lettere della stringa SNWEvengono utilizzate solo quando l'indice esterno corrente è uguale o è 1 di distanza (modulo 8) in entrambe le direzioni dall'elemento corrispondente dell'elenco di indici 4,0,6,2.


7

Brainfuck , 117 byte

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

Provalo online!

Questo codice crea prima i caratteri "EN SW" nella memoria, quindi si sposta avanti e indietro per stamparli. Lo spazio è nel mezzo, perché è stampato più spesso. N, S, W ed E non appaiono mai insieme, quindi si trovano su lati opposti della memoria. Per l'ottimizzazione alcuni decrementi finali si verificano durante la fase di output.


1
OK, questa è una bella risposta. Immagino tu mi abbia battuto su questo. +1 per -1 :-)
ElPedro il

1
A proposito, ho dimenticato di dire, benvenuto nel sito di Code Golf. In attesa di competere con te in futuro ☺
ElPedro,

1
Benvenuto! Valuta di aggiungere una spiegazione o un link a un interprete online per il programma. Vedi altre risposte per esempi. Le risposte di soli codici brevi tendono ad essere contrassegnate automaticamente come di bassa qualità.
mbomb007,

1
Grazie, posso aggiungere una spiegazione del mio codice. Cercherò anche di capire come funzionano i collegamenti online.
Helena,

1
@Helena Per il link puoi consultare il link "Provalo online" sulla mia risposta. Se incolli il tuo codice ed eseguilo, puoi fare clic sull'icona del link e ottenere una risposta di golf del codice perfettamente formattata che puoi semplicemente copiare e incollare qui. Funziona come per magia e supporta molte lingue. Vale la pena provare.
ElPedro,


5

Gelatina ,  16  15 byte

“¤œỵpq⁵’ṃ“NESW 

Un programma completo che stampa il testo

Provalo online!


16 ...

“¥Þ¡¦¢¬£æ‘ṃ“¡ɱ⁻»

Un collegamento niladico che produce un elenco di elenchi di caratteri (minuscoli).

Provalo online!


Alternative 15 come un collegamento niladic che produce un elenco di caratteri (minuscolo) (con spazi): “¡XÇŀqỵÑ’ṃ“¡⁴ṁ».


5

Commodore BASIC (TheC64Mini, C64, C128, VIC-20 ecc.) 28 byte BASIC con token utilizzati

 0 PRINT"N NE E SE S SW W NW

In Commodore BASIC, non è necessario il segno di virgolette di chiusura su PRINToLET istruzioni poiché l'interprete lo chiuderà automaticamente, questo salva un token BASIC.

In alternativa, si può semplicemente usare la modalità diretta come segue:

Commodore BASIC 23 personaggi PETSCII (+ RETURNda eseguire)

?"N NE E SE S SW W NW

Non sono sicuro di come contare il numero di byte utilizzati in questa istanza come in base all'interprete ?e PRINTutilizzare lo stesso numero di byte e non esiste alcun programma memorizzato in memoria.


1
PRINTpuò essere sostituito anche con ?, salvando quattro byte.
James,

1
No non è vero; PRINTe ?usa la stessa quantità di token BASIC. Non sto contando i caratteri PETSCII in quanto non è molto rappresentativo della quantità di memoria disponibile utilizzata dall'interprete.
Shaun Bebbers,

1
Dopo tutti questi anni sto ancora imparando nuove cose sul Commodoro. Grazie Shaun! c64-wiki.com/wiki/BASIC_token
James

Eccone uno che ho fatto prima (per il C64) -> pastebin.com/NMYzTC7k
Shaun Bebbers

4

Japt , 16 byte

Restituisce una matrice di stringhe minuscole. La stringa compressa era di 18 byte ma usava invece acome delimitatore e quindi si divideva in quello più corto.

`nÂà!Z°°nw`qa 

Provalo : il piè di pagina formatta l'output.


4

Pesce morto ~ , 138 byte

{{i}i}c{{d}}cs{i}c{d}ic{{d}}iisicsic{{d}}iisicisddddddc{d}ddddc{{d}}iisicisddddddc{{iiii}}sicisddddddciiiic{{d}d}icisddc{{d}d}ics{i}c{i}dc

Provalo online!

Pertanto, l'output in lettere minuscole con newline è meglio di default (maiuscolo con spazi).

Questo codice è stato generato dal mio ottimizzatore, scritto in C ++ (grazie a calamari per un'altra idea di ottimizzazione!):

#include <iostream>
#include <string>
#include <queue>
#include <vector>


int eval(const std::string& actions, int result)
{
    int mult = 1;

    for (int i = 0; i < (int)actions.length(); ++i)
    {
        switch (actions[i])
        {
        case 's':
            result *= result;
            if (result == 256)
                result = 0;
            break;

        case '{':
            mult *= 10;
            break;

        case '}':
            mult /= 10;
            break;

        case 'd':
            if (result > 256 && result - mult <= 256)
                result = (result - mult) % 256;
            else
                result -= mult;
            break;

        case 'i':
            if (result < 256 && result + mult >= 256)
                result = (result + mult) % 256;
            else
                result += mult;
            break;
        }
    }

    return result;
}

struct worse
{
    bool operator()(const std::string& a1, const std::string& a2)
    {
        return a1.length() > a2.length();
    }
};

std::string BestStr(int accumulator, int target)
{
    std::priority_queue<std::string, std::vector<std::string>, worse> actions;
    actions.push(std::string(""));
    while (true)
    {
        std::string a = actions.top();
        int new_acc = eval(a, accumulator);
        if (new_acc == target)
            return a + "c";

        actions.pop();

        int last_braces = 0;
        int i = a.length() - 1;
        while (i >= 0 && a[i] == '}' && last_braces < 2)
        {
            ++last_braces;
            --i;
        }
        bool is_last_i = (i >= 0 && a[i] == 'i');
        bool is_last_d = (i >= 0 && a[i] == 'd');
        bool may_add_braces = (i < 0 || a[i] == 's');
        bool may_add_c = (new_acc > 1 && new_acc < 30);

        if (may_add_c)
        {
            actions.push(a + "s");
        }
        if (may_add_braces)
        {
            actions.push(a + "{{}}");
            actions.push(a + "{}");
        }
        for (int braces_back = 0; braces_back <= last_braces; ++braces_back)
        {
            for (int c = 'd'; c <= 'i'; c += 'i' - 'd')
            {
                if ((!is_last_i || c == 'i') &&
                    (!is_last_d || c == 'd') ||
                    braces_back == 0)
                {
                    std::string new_actions = a;
                    new_actions.insert(new_actions.length() - braces_back, 1, (char)c);
                    actions.push(new_actions);
                }
            }
        }
    }
}

std::string DeadfishConvert(std::string s)
{
    std::string result;
    int accumulator = 0;

    for (int c: s)
    {
        result += BestStr(accumulator, c);
        accumulator = c;
    }
    return result;
}

int main()
{
    std::string s1 = DeadfishConvert("N NE E SE S SW W NW");
    std::cout << s1 << '\n';
    std::cout << s1.length() << '\n' << '\n';
    std::string s2 = DeadfishConvert("n ne e se s sw w nw");
    std::cout << s2 << '\n';
    std::cout << s2.length() << '\n' << '\n';
    std::string s3 = DeadfishConvert("N\nNE\nE\nSE\nS\nSW\nW\nNW");
    std::cout << s3 << '\n';
    std::cout << s3.length() << '\n' << '\n';
    std::string s4 = DeadfishConvert("n\nne\ne\nse\ns\nsw\nw\nnw");
    std::cout << s4 << '\n';
    std::cout << s4.length() << '\n' << '\n';
}


4

File batch, 19 byte

La domanda non ha mai dichiarato che è stato necessario eseguire l'output N NE E SE S SW W NWe nient'altro, né che non è stato possibile uscire a causa di un errore dopo aver fatto questo codice genera solo un errore ma non si chiude a causa di esso.

N NE E SE S SW W NW

Produzione

>N NE E SE S SW W NW
'N' is not recognized as an internal or external command,
operable program or batch file.

File batch, 25 byte

N NE E SE S SW W NWUscita solo senza errori o arresti anomali.

@echo N NE E SE S SW W NW

Potresti salvare un byte sostituendo cd con solo virgolette, come 'N NE E SE S SW W NW'- otterrai qualcosa del tipo: N NE E SE S SW W NW - command not found
Dewi Morgan l'

4

Python2, 59 byte

''.join(' SEWN'[0xe0619042210504>>i*3&7]for i in range(19))

Il numero magico è costituito dagli indici a tre bit uniti nella stringa di caratteri, in ordine inverso, in modo da poter iniziare a scorrere l'LSB.


Ho impiegato un po 'di tempo a cercare di ridurre il numero magico, ma ripetere la stringa di caratteri tramite moltiplicare per consentire ulteriori indici non funziona a causa della necessità di codificare per lo spazio: il migliore che ho ottenuto per gli indici sovrapposti nella ricerca ha aggiunto più caratteri al stringa di cifre rimosse dal numero magico (tra cui un paio di sfortunati disinteressati nel mezzo):

''.join('WN S ES W xxE '[0x423659711>>i*2&15]for i in range(19))

Perché rendere ir semplice quando puoi renderlo complicato? :-)
GB

4

K (ngn / k) , 23 22 byte

-1 byte grazie a ngn!

"WNES"@5\7108085518230

Provalo online!

J , 34 30 byte

echo(#:3510)<;.1'NNEESESSWWNW'

Provalo online!


Galeno, per J che fa eco al letterale sarebbe più breve. Mi piacerebbe vedere quel ritmo ... Non sono riuscito a farlo
Giona

1
Sì, l'eco sarebbe di 4 + 19 byte. Non ho idee migliori per.
Galen Ivanov,

1
per k: se scambiamo " "<-> "W"( 0<-> 4in base 5), lo spazio sarà alla fine e possiamo rimuoverlo perché l'indicizzazione delle stringhe fuori dai limiti dà comunque uno spazio:"WNES"@5\7108085518230
ngn

@ngn Grazie!
Galen Ivanov,

1
@GalenIvanov buono anche per i database ad alte prestazioni :) arthur ha progettato k come linguaggio di base per kdb +
ngn


3

Brachylog , 19 byte

"NNEESESSWWNW"ḍ₄ḍᵐc

Provalo online!

Emette come un elenco. ḍ₄ḍᵐcsalva due byte scrivendo sette spazi e rendendo letterale l'intero predicato, quindi almeno lega PHP ...

"NNEESESSWWNW"         The string "NNEESESSWWNW"
              ḍ₄       split into quarters
                 ᵐ     with each quarter
                ḍ      split in half
                  c    and concatenated
                       is the output.

Ho cercato di essere intelligente 3⟦{;"NESW"↺₍h₂a₀ᶠ}ᵐc, ma non è riuscito a ottenere SE o NW giusti, ed è comunque un byte più lungo.


3

Spazio bianco , 151 byte

[S S S T    T   N
_Push_3_W][S S T    T   T   S N
_Push_-6_N][S S T   T   T   S T S S N
_Push_-52_space][S S S T    T   N
_Push_3_W][S T  S S T   N
_Copy_0-based_1st_(space)][S S S T  T   N
_Push_3_W][S S T    T   N
_Push_-1_S][S T S S T   S N
_Copy_0-based_2nd_(space)][S S T    T   N
_Push_-1_S][S T S S T   N
_Copy_0-based_1st_(space)][S S T    T   T   T   T   N
_Push_-15_E][S S T  T   N
_Push_-1_S][S T S S T   S N
_Copy_0-based_2nd_(space)][S T  S S T   S N
_Copy_0-based_2nd_(E)][S T  S S T   N
_Copy_0-based_1st_(space)][S T  S S T   N
_Copy_0-based_1st_(E)][S S T    T   T   S N
_Push_-6_N][S T S S T   S N
_Copy_0-based_2nd_(space)][S S T    T   T   S N
_Push_-6_N][N
S S N
_Create_Label_LOOP][S S S T S T S T S S N
_Push_84][T S S S _Add][T   N
S S _Print_as_character][N
S N
N
_Jump_to_Label_LOOP]

Lettere S(spazio), T(scheda) e N(nuova riga) aggiunti solo come evidenziazione.
[..._some_action]aggiunto solo come spiegazione.

Provalo online (solo con spazi non elaborati, schede e nuove righe).

Spiegazione:

  1. Spingere i valori unicode meno la costante 84 per i caratteri "WN W WS S ES E EN N" nello stack (notare che la stringa viene inserita invertita). Inoltre, utilizzo alcune copie dei valori precedentemente inviati per salvare i byte, ove possibile.
  2. Quindi avviare un ciclo infinito, che procede come segue:
    1. Aggiungi la costante 84 al valore unicode corrente
    2. Stampalo come personaggio su STDOUT

La costante 84è generata da questo programma Java che ho scritto per un'altra sfida a cui ho risposto in Whitespace .


3

MathGolf , 20 17 byte

ÿnesw▒∙╫m+mÉîÄ╪^─

-3 byte grazie a @maxb .

Provalo online.

Spiegazione:

ÿnesw      # Push 4-char string "nesw"
           #  STACK: "nesw"
          # Split to a list of characters
           #  STACK: ["n","e","s","w"]
          # Triplicate it
           #  STACK: ["n","e","s","w"],["n","e","s","w"],["n","e","s","w"]
          # Rotate the top one once towards the left
           #  STACK: ["n","e","s","w"],["n","e","s","w"],["e","s","w","n"]
 m+        # Append the top two together
           #  STACK: ["n","e","s","w"],["en","se","ws","nw"]
   m       # Map the strings in the top list to:
    ÉîÄ╪   #  Rotate the string the 1-based index amount of times towards the right
           #   STACK: ["n","e","s","w"],["ne","se","sw","nw"]
^          # Zip; creating pairs with the top two lists
           #  STACK: [["n","ne"],["e","se"],["s","sw"],["w","nw"]]
          # Flatten this list
           #  STACK: ["n","ne","e","se","s","sw","w","nw"]
           # (after which the entire stack is output implicitly as result)

1
17 byte . Questa è stata una sfida divertente. L'ho provato prima, ma ho finito per farlo. Penso che il massimo che puoi fare da questo sia 1 byte in più, ma non sono riuscito a trovare un modo più breve.
max

@maxb Ah buon approccio. Devo ammettere che quel codice di dimensione blocco X ( Ée Äin questo caso) mi confonde ancora un po 'a volte .. A volte non sono sicuro quando faccio o non devo usare quei blocchi di codice. Il tuo m+non ne usa uno per esempio. Ma il tuo Äè un blocco di codice di dimensione 1. Ho mÅî╪appena provato a vedere cosa è successo, motivo per cui ora capisco perché c'è un blocco di codice di dimensione 1 Äper cominciare. :)) Grazie per i -3 byte, comunque. C'è ancora molto da imparare che vedo.
Kevin Cruijssen il

1
Bella spiegazione! Ho provato a fare una soluzione senza convertirla in un elenco di caratteri, ma il comando zip era un po 'traballante. Per i blocchi di codice, pensali come sostituti, usati al posto di {}. mÅî╪crea il mapping, ma non ha un for-loop all'interno del mapping. Se scrivi m{î{╪}}, è forse più facile vedere che il codice è "mappa a: loop <indice> volte e ruota la stringa ogni ciclo". Il motivo per cui m+non ne esiste uno è che alcuni comandi hanno blocchi impliciti di 1 byte (mappa, filtro, riduzione, ecc.), Ma înon è un comando destinato ad essere utilizzato in combinazione con un blocco.
max

1
@maxb In effetti sapevo che i blocchi di codice erano una variante più breve di {...}, ma ho dimenticato che integer{è un for-loop. :) Ora îÄ╪ha molto più senso. Grazie per la spiegazione!
Kevin Cruijssen,


2

Seme , 6014 byte

27 32429737401852232227804295321578416370544555457622262891879921280324727410131817586348135470079420921373938348260737299348550007805068404867624897650263347568409592608258945989033792510474363164709158118555665232935403908551415888090695760298337219819413274977014408722140235669339108001709528995376914900494019798521214727367535169036319615676199584661126257462974800782884967804763256678000063025237472650538076831876942979826335539886276642624472204985016283691316313249488093825552581263195700506490263014623798470563718844847334940964632636436478404543496272112184140337568637349767918641524452384959486975049813859244670160569884744538279036643294867674161431756929550170395739925307134312406291063668809195567313928307910934660574895433141956111513050736041440669472422865481546405020220238818265794921314653725749392385549924210837964649297239381603259476675148489582680939048820717739905271461370132524025785160026801625672272913416389786086946626728842588663673416395169524016926695769334183833366462685756958054189820999370092892855665559717806826530952610964256124463840218293029538229042911551526509745973128558291005365222643503139067010483637086697955919587162384655443959408291567894061028044826636171014388153130769792397282335858985323269310727311039012381122390183102126191168963870116881629339035600546009305431793687183913979054151312200573069395058914262857368132993952655571167118263728070696377852599343989848263167312887211748226689125561718255196655446099711296568221690530717651328503948183228932786503716890383195810396161663632504174142420921735055441162618914957825032056019218584287089599270312541933094119409995775035365862244691419255488688879630142415739738796957474249592086989231999568273454247198389863139439897248192949030226324637037937607004428557202644332945222019553599908855943840883606735602486216245714280716148378430738983808375466562604692991701163078094015860708365913183037140180020776525026891135163345427911749533164462233906885068864798951466382247930357444595606617682531499045805835102155190109668901179666311163071611393282924908189215675892953256826649762594463293867383921972181952997833560371571545190945543033351108064265894854803319008655145213765667074789305055723258530694850418765677462165413557272747961130459219342146615095862014137406489375157766959799291089215740196734079295172946350338663239451562589633216908805028629767462044463310475859283605554743731396818983359527612902567406307270838160926586311672252276690909354125055468912844343806046309796590149977323343332039095076680537362333773750051043281967620781236684580688649899599894791764969639275247700776637892615729757899608628514791667795106390376246890330575517824338764219021396958188958235055290896924249770944905659304681507478975095888248103169710912376599445302527257479613158446721050489233911736089191439017996962182413511012900366501119556105789078275149705515012300827868862038071066912823449506913958912235923323638505757204526506327010926007595704417253684932596231606733027284263178479840785607928320603259662026791082244015829365605451084366715394628351636563955621161378688550003390556445245074739462307110100863024184316465734324401688465928827408449165190271528329602702373730346394803239394173490819727873116531045433457650881080122796159241596543253982402471104065237941729677594379317274541529006952959000152687275974001138315010176843925599438278290218390644740919129323109582279220437886915496736885058271413958305953151184342725824729076581370881383360210631877985352671536000503948280559301633936877162466145026758809907939645467704805892486147550057845773849575278620555906080753862688722846292689494961297512113753414009189522365247542490200336579292488067953461299023326925661887077747288500270026888774635820948696015812357241781814592351848858954139716506111479475207696790949277211077720834891880913260866501916732427370806066035548982017315826213049658915419681842381914237502216614528174237875875738156132703973666564945026254499265910704148825037630761619650949635972980035630316257135212349181639940504547722767898302879234673272154028964478458469466250102554612059368293497511404163963705442187242769706586819405113285219700159125119338601931670779192478917206878107091618448093140705173062420040261126935373689918208815797991761563304607704283868972915636425613833785564679990574095368828308776724486415005128506687942819070129022911666887363253202695416103545769073021185132010920185208632024811337544715055406031297413168802089421761798020616230024290524096396092608042069087607272534874457093977610919233750725135220581682913316085638068663247820037223692942067994551786014033707387642820855601334002540339334606906772532939337779748305357112540312103757754695577077583846897693527091162962000082213332051059005644562753372638247584982354478224403477604356150912451128591138652721098074872513196253790561736352841309810909110001754673250730698454675988798465247376421075019414107337634079281061629221783859449063069175434073835673063716565555614782886016441814199915418848976070834414782427725187820926042778984081922550398210353288229598805397201850487997254871012213762289412828417039945896819359898337616122446201299182152276549340911589671291124887672310931868023491872685227548726494469798568145715500153324646857181224645073236602344526749192704938665584870007079941922775292601106345725659322322536675461008337648982039319953181733660980694781559207671567197161027796266390879206526082137700937056380629087949633487181507979286568656291044492869916694352395542638882544967807857391058161838343109606346401310155771709714142586733985703451391374159045025205718989407293651441039802247981386993858491342422355232055341447145969376687615001834650283116652856369804298047720786536278306210551862061566639283704928517998916884505819581251906693306116531467413995747910736025576089721150597919824878333808115757216261812226145636769545796913912159437533454858286778214791559458862216426856243544801486923659355580455048265633089421966932180992

Genera il seguente programma befunge:

"WN W WS S ES E EN N">:#,_@

2

Hodor , 177 byte

hodor.hod("HoOodoOorhodor  HoOodoOorhodor HooodorrHodor  HooodorrHodor  HODOR?!? HooodorrHodor  HODOR?!?  HODOR?!? Hooodorrhodor  Hooodorrhodor  HoOodoOorhodor Hooodorrhodor ");

Provalo online!


2

Assembly (x86, Linux), 68 byte

$ od -x a
0000000 457f 464c 0001 0000 0000 0000 0000 0500
0000020 0002 0003 001b 0500 001b 0500 0004 0000
0000040 13b2 31b9 0000 cd05 2580 0020 0001 cd40
0000060 4e80 4e20 2045 2045 4553 5320 5320 2057
0000100 2057 574e
0000104
$ ./a
N NE E SE S SW W NW$

Fonte:

BITS 32
org 0x05000000
db 127,"ELF"
dd 1,0
dd $$
dw 2,3
dd 0x0500001B,0x0500001B
dd 4
mov dl,19
mov ecx,m
int 128
db 37
dw 32,1
inc eax
int 0x80
m db 'N NE E SE S SW W NW'

Codice utilizzato principalmente dall'ELF più breve per "Hello world \ n"?



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.