Programmazione dicotomie (letteralmente)


33

Considera una domanda scritta in un inglese semplice la cui risposta implica due parole o frasi ragionevolmente accurate (ma potenzialmente intelligenti) che possono essere separate dalla parola "e":

Q: Quali sono i due lati di una moneta? A: testa e croce

D: Quali sono i modi migliori per viaggiare? A: aereo e jetpack

D: Perché un corvo è come uno scrittoio? A: perché c'è una 'b' in entrambi e una 'n' in nessuno dei due

Obbiettivo

Scrivi un programma che, se eseguito normalmente, genera una domanda del genere.

Quando ogni altro carattere viene rimosso dal programma a partire dal secondo carattere e il risultato viene rieseguito, l'output dovrebbe essere quello che si trova alla sinistra di "e" nella risposta.

Quando ogni altro carattere viene rimosso dal programma a partire dal primo carattere e il risultato viene rieseguito, l'output dovrebbe essere qualunque sia a destra di "e" nella risposta.

(L '"e" stesso non viene emesso.)

Esempio

Se il programma è

A1B2C3D4E5F6G7H8I9

e il suo output è

What are the two sides of a coin?

Quindi l'output di ABCDEFGHIdovrebbe essere headse l'output di 123456789dovrebbe essere tails.

Regole su domande e risposte

  • Puoi usare le mie domande di esempio ma ti incoraggio a inventare le tue.
  • La domanda e le due parti della risposta:
    • deve essere tutto distinto
    • dovrebbe essere l'inglese significativo grammaticale comune
    • può contenere solo caratteri ASCII stampabili (esadecimale da 20 a 7E)
  • Idealmente la domanda sarà maiuscola e punteggiata (ma non è necessario che le risposte siano).
  • La domanda deve essere lunga almeno 30 caratteri e avere un'entropia superiore o uguale a 3,5. (Digita la stringa, premi Calcola , cerca l'ultima H (X) .)
  • Le due parti di risposta (escluso il punto [space]and[space]tra le due) devono contenere almeno 5 caratteri con entropia sopra o uguale a 2.
  • La parola "e" può apparire in entrambe le parti della risposta.

Regole sul codice

  • Nessuno dei 3 frammenti di codice può:
    • contiene commenti o qualsiasi altra cosa tradizionalmente ignorata dal compilatore / interprete (non preoccuparti di inserire un punto o due punti in più, ma se pensi che sia un commento probabilmente lo è)
    • chiudere il programma a metà esecuzione
  • Il codice può contenere qualsiasi carattere, inclusi Unicode e ASCII non stampabile.
  • Potrebbe avere un numero pari o dispari di caratteri.
  • L'output va su stdout o su un file o qualunque cosa sembri ragionevole. Non ci sono input.

punteggio

Dal momento che non voglio incoraggiare le risposte golfate ma voglio incoraggiare ancora di più le risposte intelligenti, il punteggio sarà qualcosa tra il code-golf e il contest di popolarità:

Punteggio = (upvotes - downvotes) - floor((bytes in code that outputs question) / 3)

Vince il punteggio più alto.

(Utilizzare http://mothereff.in/byte-counter come contatore di byte.)


6
Gah, è così difficile farlo in un linguaggio "normale" come JavaScript. Il più lontano che posso ottenere è qualcosa di simile x0=00;;. Grande sfida!
Maniglia della porta

@Doorknob mi dispiace di sgonfiare la tua barca, ma 00;viene tradizionalmente ignorato dal compilatore ...
John Dvorak,

2
Scherzi a parte ... "la mela" ha un'entropia di Shannon di 1,92 ???
John Dvorak,

4
It may have an odd or even number of charactersC'è un numero di personaggi che non è pari o dispari?
Spuntino l'

1
@Snack Questo fa sapere alle persone che le due parti del codice di risposta non devono avere la stessa lunghezza.
Hobby di Calvin l'

Risposte:


55

Javascript (148 byte)

Crea alcuni letterali senza senso, con l'effetto collaterale di creare un avviso * per la domanda. (le suddivisioni si comportano in modo simile, ma creando avvisi * per ciascuna delle risposte).

"';"+alert( 'What is the ideal breakfast???')+/ " ;apl=e"rbta(k"esnc"r.armebplleadc ee g g s(" ) + " \/)k;e"/+ ",t'hceo 'c)a;kye= ailse rat (lpi)e "

Divide:

";+lr('hti h da rafs??)/";p="baken".replace   (    /ke/ ,'co');y=alert(p) 

e

'"aet Wa steielbekat?'+  alert("scrambled eggs")+"\);"+"the cake is a lie"

 

Domanda: What is the ideal breakfast???

Risposte: baconescrambled eggs


4
Questo è il tipo di qualità che adoro di questo sito! Dove altro puoi trovare persone che possono farlo ??
Cruncher,

1
Ho preso lezioni di improvvisazione (forse ovviamente) e ti darò un +1 qui per il valore dell'umorismo. Ma come sanno tutti gli ingegneri della scienza dell'apertura, siamo professionisti della scienza ... quindi la parte più divertente è fare una pistola pulita . :-)
Dr. Rebmu,

29

Brainfuck (437 caratteri)

Devo confessare che questo è il mio primo programma Brainfuck che in realtà fa qualcosa di significativo. Il programma è altamente ottimizzato per sistemi a memoria insufficiente poiché utilizza solo 4 posizioni di memoria.

Domanda: What are the two main groups of trees?

Risposte: conifersebroadleafs

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

Anello principale

Il programma è costituito da un ciclo principale (che non è in realtà un ciclo poiché tutti i blocchi [] vengono eseguiti una sola volta) e due sezioni.

-+[[        // let answers enter
            * SNIP interleaved answer sections *
]]
++-+[[      // let odd answer and question enter
    +-+-[[  // let question enter
            * SNIP question section *
    ]]
]]

Se si desidera testare sezioni in modo indipendente, è necessario tenere conto del ciclo principale. La posizione 0 contiene -1 nella risposta pari, 1 nella risposta dispari e 2 nella sezione delle domande.

Sezione risposta

Risposta uniforme (istruzioni dispari rimosse):

// location 0 contains minus 1 from main
// set location 1 = 10 * 10 minus 1 = 99 (c)
+++++++++++[>++++++++++<-]>-. // c
++++++++++++.-.     // on
-----.---.          // if
-.+++++++++++++.+.  // ers
<                   // goto 0 (which contains 0)
+-+-+-+-+-          // padding to match length of odd answer

Risposta dispari (anche istruzioni rimosse):

// location 0 contains 1 from main
// set location 1 = 16 * 6 plus 2 = 98 (b)  location used for characters below 'l'
// set location 2 = 16 * 7 plus 2 = 114 (r) location used for 'l' and above
+++++++++++++++[>++++++>+++++++<<-]>++.>++. // br
---.<               // o
-.+++.              // ad
>---.<              // l
+.----.+++++.       // eaf
>+++++++.           // s
>                   // goto 3 (which contains 0)

Sezione domande

Ho deciso di conservare lo spazio in una posizione separata perché il suo valore differisce drasticamente dagli altri personaggi. Ciò consente di stampare semplicemente lo spazio con <.>.

// location 0 contains 2 from main
// set location 1 = 17 * 2 minus 2 = 32 (space)
// set location 2 = 17 * 5 plus 2 = 87 (W)   location used for characters below 'r'
// set location 3 = 17 * 7 minus 3 = 116 (t) location used for 'r' and above
+++++++++++++++[>++>+++++>+++++++<<<-]>-->>---<++. // W
+++++++++++++++++.  // h
-------.>.<         // at
<.>                 // (space)
.>--.<++++.         // are
<.>                 // (space)
>++.<+++.---.       // the
<.>                 // (space)
>.+++.<++++++++++.  // two
<.>                 // (space)
--.------------.    // ma
++++++++.+++++.     // in
<.>                 // (space)
-------.>-----.     // gr
<++++++++.>+++.     // ou
<+.>--.<            // ps
<.>                 // (space)
-.---------.        // of
<.>                 // (space)
>+.--.<-..>+.       // trees
<<[<++>-]<-.<       // ? (value_of_space * 2 minus 1)

Aggiornamento finale

Nel mio aggiornamento finale ho ottimizzato le moltiplicazioni in modo da utilizzare le istruzioni minime. Anche l'inclusione di 'l' nel secondo gruppo di caratteri nella sezione delle risposte dispari si è rivelata un enorme miglioramento. Il risparmio di un singolo carattere in una risposta dispari significava sostanzialmente due caratteri dell'intero programma, poiché riduce anche il riempimento dalla risposta pari. Ho anche rimosso un paio di istruzioni non necessarie da qua e là e non credo di poter ulteriormente ottimizzare il codice.


23

Lotto - 84

Molto orgoglioso di questo

Programma completo: quali sono i due lati di una moneta? (Console)

echo What are two sides of a coin?  2>>xx  2>>cc&&eecchhoo  hteaaidlss  2>>xx  2>>cc

Evens only: heads (file 'c')

eh htaetosdso  on 2>x >c&echo heads 2>x >c

Solo quote: code (file 'x')

coWa r w ie faci? >x 2>c&echo tails >x 2>c

Funziona reindirizzando l'output dell'errore su un file in entrambi i casi.


Ho già pensato a un modo per renderlo più breve, ma dovremo aspettare fino a domani.
Augurous

3
Questo ha ottenuto il punteggio più alto finora: 12 - 28 = -16.
solo il

20

Python - 104 96 (golf: 76)

La mia soluzione è piuttosto semplice (e in qualche modo leggibile):

"";print 'What is the color of a zebra?' ;""
paraianat= "' b l a c k '"
aparaianat="'w h i t e'"

Produzione:

What is the color of a zebra?
black
white

Onestamente, ho trovato l'idea per la prima riga nella risposta di bitpwner.


Un'alternativa ancora più leggibile: - 113 105 97

"";print 'What is the color of a zebra?' ;""
"p r i n t ' b l a c k '" ;"p r i n t ' w h i t e '"

Un'alternativa ancora più breve: - 86 76

"";print'What is the color of a zebra?';""
"""";;pprriinntt''bwlhaictke''"""

"scacchiera" soddisfa anche i requisiti.
Martin Ender,

3
@ MartinBüttner Zebra. :-P
David Richerby,

Oh, mi piace zebra. E si adatta perfettamente a una versione "giocata a golf" con una domanda di esattamente 30 caratteri. Quindi ho leggermente modificato la mia soluzione. :)
Falko,

1
Le stringhe tra virgolette non sono commenti, ma stringhe su più righe. Dato che sono anche usati come stringhe di documenti , potrebbero confondersi con i commenti.
Falko,

1
La domanda aggiornata è lunga solo 29 caratteri.
Dennis,

15

Rebmu : 79 caratteri OR (37 + lunghezza (p1) + 2 * max (lunghezza (p2), lunghezza (p3)))

Per prima cosa fornirò una soluzione di 79 caratteri che chiede quali lingue devi imparare? (entropia 4.0, 30 lettere escluse ?) e ti offre i suggerimenti di Rebol e [Rosso] :

DD  11  DD :do dd {dd  {p{Which languages must you learn?}qt}} pp{{[RReebdo]l}}

Una tattica unica disponibile qui che non è in altre lingue deriva dal fatto che le parentesi graffe sono un delimitatore di stringa asimmetrico, che può nidificare legalmente:

my-string: {"It's cool," said {Dr. Rebmu}, "for MANY reasons--like less escaping."}

Ciò mi ha permesso di produrre una soluzione generalizzata, che può funzionare senza sforzo su qualsiasi programma che non utilizza sequenze di escape. La versione a 79 caratteri era abbastanza semplice da scorciatoia, ma per contenere correttamente l'origine di programma arbitraria per i programmi p2 e p3 avresti bisogno del modello completo. Se lo avessimo usato, sarebbero stati 87 caratteri:

DD  11  DD :do dd {dd  {p{Which languages must you learn?}qt}} ddoo{{pp{{[RReebdo]l}}}}

Il modello per l'utilizzo di questa forma generale è che se si dispone di tre testi originali di personaggi sequenziali di lunghezza variabile (usiamo un esempio come AAA, BBBBB, CCCCCCC) si possono codificare come qualcosa sulla falsariga di:

DD  11  DD :do dd {dd  {AAAqt}} ddoo{{BCBCBCBCBC C C}}

(Nota: anche se questo schema non funzionerà senza modificare i programmi che usano caratteri di escape, questo non è un difetto fatale. Ottenere una parentesi graffa sinistra senza pari in una stringa delimitata da parentesi graffe richiede qualcosa di simile {Foo ^{ Bar}... ma si potrebbe facilmente riscrivere che usando la notazione di stringa alternativa "Foo { Bar"e i casi combinati possono essere gestiti incollando insieme una combinazione di stringhe senza caratteri di escape.)

Quindi ... che ne dici di un esempio? Una volta disponibile il modulo generale, questo programma di 573 caratteri è stato assemblato in un paio di minuti da 3 precedenti soluzioni di golf di codice:

DD 11 DD: do dd {dd {rJ N 0% rN Wa1m2j S {\ x /} D00 Hc & [u [Ze? Wa Qs ~ rpKw [isEL00c [skQd2k] [eEV? KQ [tlQ]] pcSeg - b00 [ eZ 1 5] 3] prRJ [si ~ dSPscSqFHs] eZ 1 [s + dCa + wM2cNO]]] Va | [mpAp2j] prSI ~ w { } Ls2w Wl h01tiVsb01n -1 chRVs { } hLceVn01qt}} ddoo {{BrdS [sn [{N sbeo [tIt0l1eV} 0e5gXN1 01L {5s0} C {1} 0 {0 Do5f0 0bMe1e0r0} 0]]] tMw9C9 Numz Jl [paN + [KperlCJBn [a ba sWS {B noJn Nn]]] {K, j} b P {. } lf EZ - - n [N m {G ototestoreandbuysome more}] {T akeonedownandpassitar ound} c B w P lf]]}}

Se qualcuno vuole provare a scrivere quel programma nella loro lingua preferita e pensa di poter battere 573, fammelo sapere. Se lo farai, ti darò una grande reputazione - supponendo che la tua lingua preferita non sia Rebmu, perché so che quei programmi non sono minimi. :-)

Quella spaziatura "dispendiosa" che ottieni alla fine è ciò che accade quando p2 e p3 hanno lunghezze squilibrate. Ma tutti e 3 i programmi hanno dimensioni diverse in questo caso, quindi non esiste un abbinamento particolarmente valido da scegliere per p2 / p3. (Ho scelto questi perché non c'erano dati esterni come input, come un labirinto o altro, non che fossero di lunghezza simile. Mentre avrei potuto scrivere nuovi programmi che erano più ottimali, ho trascorso abbastanza tempo e il punto era non devi scrivere nuovi programmi ...)

Come funziona

(Nota: ho iniziato con un approccio più "creativo" che non era così snello ma più interessante. L'ho spostato in una voce sul mio blog in quanto la descrizione di questo approccio è già lunga.)

Una chiave qui è l'inganno "codice eval come stringa" come alcune altre voci, ha solo la carta vincente del delimitatore di stringa asimmetrica. Inizierò spiegando il funzionamento del caso di 80 caratteri.

Ecco il programma "intero", che regola lo spazio per la leggibilità di questo caso:

DD 11                    ; assign 11 to dd (about to overwrite again)
DD :do                   ; make dd a synonym for DO (a.k.a. "eval")

; eval a string as source code that ends with QUIT (QT)
dd {dd  {p{Which languages must you learn?}qt}}

; we'll never get here, but whatever's here must be legally parseable
pp{{[RReebdo]l}}

Qui finiamo per impostare DD su un sinonimo di DO (aka "eval"). Ma il trucco è che quando vengono eseguiti i programmi divisi in due, finiscono per eseguire il codice il cui unico effetto è definire D al letterale innocuo 1.

Ecco cosa rende il codice dei caratteri dispari, lo spazio bianco è nuovamente regolato:

D 1                      ; assign 1 to d
D d                      ; assign d to itself, so it's still 1
d                        ; evaluates to integer, no side effect
{d pWihlnugsms o er?q}   ; string literal, no side effect
p {Rebol}                ; print "Rebol"

Ed ecco il codice dei caratteri pari:

D 1                      ; assign 1 to d
D:od                     ; URL-literal (foo:...), no side effect
d                        ; evaluates to integer, no side effect
{{hc agae utyulan}t}     ; string literal (well-formed!), no side effect
p {[Red]}                ; print "[Red]"

In realtà è il caso che per il programma non dimezzato, dd {dd {(arbitrary code)qt}}eseguirà qualsiasi codice tu voglia. Tuttavia, ci sono due chiamate da valutare invece di una sola. Questo perché mentre le parentesi graffe nidificate funzionano benissimo nel codice interfogliato, confondono il comportamento eval di DO. Perché:

do {{print "Hello"}}

Caricherà la stringa come programma, ma quel programma finisce per essere solo la costante di stringa {print "Hello"}. Quindi il trucco che uso qui è prendere il mio DD (mantenendo lo stesso valore di funzione di DO) ed eseguirlo due volte. I halver masticano le diverse parti della stringa ma non masticano entrambi se la dispari / dispari è corretta per il contenuto, e poiché ciò che rimane fuori dalla stringa dopo il dimezzamento è solo la costante integrale dsono innocui.

Con questo modello non c'è alcuna sfida nello scrivere il comportamento del programma quando non è tagliato a metà: puoi inserire qualsiasi cosa fintanto che la lunghezza dei caratteri del codice è pari (strano se stai contando il QT, che è QUIT). Se hai bisogno di ottenere il numero pari da uno dispari, lancia uno spazio (quindi in realtà c'è un +1 nella mia formula sopra su p1 per lunghezze di programma dispari di p1) . Il trucco sembrerebbe scrivere quel codice interlacciato in seguito, che deve passare al parser se non viene dimezzato. (Non verrà eseguito a causa del QT, ma deve essere CARICABILE prima che venga eseguito.)

Questo caso è banale; ppcarica bene come simbolo anche se non definito, ed è suddiviso pper la stampa in ogni mezzo programma. Ma possiamo fare un altro trucco semplicemente usando di nuovo una stringa letterale. I programmi dimezzati hanno ancora DO definito normalmente, quindi avremmo potuto anche solo dire:

ddoo{{pp{{[RReebdo]l}}}}

Avendo l'unica parte raccolta dal parser in tutto il caso essere la parola simbolica ddooe una stringa letterale, possiamo quindi intercalare tutti i due programmi che desideriamo all'interno di quella stringa letterale e non far arrabbiare il parser. Le versioni dimezzate diranno solo:

do{p{Rebol}}

..e...

do{p{[Red]}}

Come ho già detto, questa parte sembra familiare ad altre soluzioni che trattano i programmi come stringhe e li valutano. Ma nel caso della competizione, quando i programmi che stai confezionando contengono stringhe nidificate, ciò genera una chiave inglese per loro. Qui le uniche cose che ti metteranno nei guai sono l'uso dell'evasione tramite i punti di inserimento ( ^) ... che possono essere facilmente risolti .


(Piccola nota 'imbroglione': ho aggiunto QT per "ESCI" in risposta a questo problema. In realtà, avevo rimosso intenzionalmente l'abbreviazione per smettere prima ... perché in qualche modo ho pensato che fosse buono solo per l'uso della console e semplicemente riprendendo il spazio di due lettere se non fosse in un REPL. Lo sto aggiungendo perché vedo che mi sbagliavo, non lo ho aggiunto per questo caso in particolare. Tuttavia, prima di tale modifica, sarebbero stati più lunghi di 2 caratteri. quando ho pubblicato per la prima volta la soluzione c'era un bug in Rebmu che gli impediva di funzionare davvero anche se avrebbe dovuto ... ora funziona.)


Hai davvero creato il tuo linguaggio di programmazione?
voci

2
@ tjt263 È meglio pensare a una "codifica" di code-golf del linguaggio esistente Rebol . Le persone hanno fatto cose simili per esempio con Pyth , che in sostanza abbrevia Python. Ma Rebmu ha una differenza abbastanza interessante in quanto è effettivamente caricabile dal parser Rebol e "compatibile". Puoi entrare in Rebol in qualsiasi momento nel mezzo di esso, vedi ad esempio Clessidra . Felice di discuterne nella chat di Rebol e Red se lo desideri.
Dr. Rebmu,

15

Perl 186 139 135

"";print'What are the best things in life?';""&&pprriinntt("'hceraurs ht hyeo ulra meennetmaiteiso'n s   o f   t h e i r   w o m e n ")

Quali sono le cose migliori della vita?

"pitWa r h ettig nlf?;"&print('crush your enemies'                 )

schiaccia i tuoi nemici

";rn'htaetebs hnsi ie'"&print"hear the lamentations of their women"

sentire i lamenti delle loro donne

Utilizzando risposte meno lunghe:

Perl 79 72

"";print'What are my preferred weapons?';""&&pprriinntt("'smwaocredss'")

What are my preferred weapons?(30Byte, H (X) = 3.76) swords(H (X) = 2,25) e maces(H (X) = 2,32)


9

Python - 139 103

"";print'What are the ingredients for success?';""; ";" ;id=='"RUaniincboorwnss'";;pprriinntt  id++"'"'

What are the ingredients for success?-> UnicornseRainbows

Test:

c="\"\";print\'What are the ingredients for success?\';\"\"; \";\" ;id==\'\"RUaniincboorwnss\'\";;pprriinntt  id++\"\'\"\'"
exec c        # What are the ingredients for success?
exec c[::2]   # Unicorns
exec c[1::2]  # Rainbows
print 
print c[::2]  # ";rn'htaeteigeinsfrsces'";"";d="Unicorns";print d+''
print c[1::2] # "pitWa r h nrdet o ucs?;" ; i='Rainbows';print i+""

Vecchia versione:

# What are the ingredients for success?
"";print(('What are the ingredients for success?'));""; ";" ;"pHrEiRnEt (C'OUMnEiSc oZrAnLsG'O)"; ";" ; "p,r iTnOtN(Y' RTaHiEn bPoOwNsY'.)"
# Unicorns
";rn('htaeteigeinsfrsces')";"";print('Unicorns');"";", TONY THE PONY."
# Rainbows
"pit(Wa r h nrdet o ucs?);" ; "HERE COMES ZALGO" ;  print('Rainbows')

6

Haskell, 117

Dover lavorare con il paradigma funzionale di Haskell significa che tutto deve essere assegnato a una variabile o commentato con commenti di linea --o di blocco {- -}; avere funzioni senza senso eseguite senza assegnazione è fuori. Quindi, per mantenermi sano di mente, ho mantenuto la domanda e le risposte brevi quanto le regole lo consentono.

Domanda: di cosa non posso averne abbastanza?

main=putStrLn{---}"What can I not have enough of?"{- }
=u"Scrank=e"sS"h
omeasi"n
=mpauitnS=tpru taSntprt tmLi

-----}

"Scarpe" e "torte":

mi=uSrn--"htcnInthv nuho?{ 
uSrn="Shoes"
main=putStr mi
--}
anpttL{-}Wa a  o aeeog f"-}="cakes"
main=putStr anpttL
---

NB L'aspetto di crank"Cosa non posso averne abbastanza?" non dovrebbe essere considerato significativo.


1
Non sono consentiti commenti
orgoglioso haskeller l'

E come il secondo è una sintassi haskell valida?
orgoglioso haskeller l'

il codice originale ha un blocco di commenti non chiuso perché la coppia di chiusura è in un commento di riga. il codice "torte" non sembra nemmeno un codice - anpttL non è una funzione? dov'è il segno = nella sua definizione? non si chiama anpttLWa?
orgoglioso haskeller l'

@proudhaskeller Non ha rispettato la regola relativa ai commenti. Mi dispiace per quello. Il primo programma non ha un blocco di commenti non chiuso. Analizza bene. I commenti di riga non hanno significato nei commenti di blocco. Il secondo è valido perché i commenti di riga sono validi. anpttL è una stringa. Elimina il commento del blocco e vedrai che equivale a "torte". Wa è nel commento di blocco, quindi no, non è in realtà anpttLWa.
comperendinous

2
@proudhaskeller La mia testa lascia che GHCi faccia il lavoro per suo conto.
comperendinous

4

Lisp (76 caratteri)

Domanda di 31 caratteri, 6 caratteri per ogni risposta ⟹ lunghezza - payload = 33

'(: (pprriinncc''fmuacghesnitaa))':(princ "What is your favorite pink hue?")

Volevo usare "Qual è il tuo colore preferito?", Ma anche allungato all'ortografia britannica, ha appena raggiunto il minimo di 30 caratteri per la lunghezza della domanda e avevo bisogno di una domanda di lunghezza dispari per bilanciare le doppie virgolette.

Dicono che Common Lisp sia prolisso, ma non penseresti così per questo one-liner. Non è nemmeno molto offuscato, devi solo inserire un po 'di spazio per vedere cosa viene quotato e cosa viene eseguito.

Molte implementazioni di Lisp elimineranno i colori perché deformano i simboli in maiuscolo. Se questo ti disturba, cambia ''fmuacghesnitaain ""fmuacghesnitaa"".


Poiché questa domanda aveva una componente di voto, l'ho sfruttata per attirare l'attenzione per cercare di ottenere più voti. Ma la generosità è scaduta e dato che non posso darmi i punti :-) Lo darò alla tua voce in base al linguaggio antenato di Rebmu e ti incoraggio a verificarlo se non l'hai mai fatto prima! codegolf.stackexchange.com/a/36114/57
Dr. Rebmu,

3

STATA 295

Domanda: quali sono i migliori dessert da cuocere in questo momento? Risposta: brownies e biscotti.

Spiegazione: I comandi in STATA sono delimitati da nuove righe.
Mentre "//" è un commento in STATA, "///" dice al compilatore di continuare alla riga successiva e di includere i suoi contenuti nel comando corrente.

I comandi in STATA possono spesso essere abbreviati al punto in cui sono considerati abbastanza unici da essere differenziabili (quindi "generate" diventa "g", "global" diventa "gl" o "glo", "capture" diventa "cap", " display "diventa" di ", ecc.). Il comando display visualizza il testo sullo schermo. Il comando capture cattura tutti gli errori (inclusi gli errori di sintassi), motivo per cui questo programma viene compilato correttamente.

Immagino che se vuoi diventare pignolo, qualsiasi "/" aggiuntivo dopo i primi 3 consecutivi in ​​una riga viene ignorato dal compilatore. Inoltre, nel programma "brownies", tecnicamente + "" è un commento. Ma sostengo che conta ancora perché il comando di acquisizione lo avrebbe comunque reso irrilevante anche se non fosse un commento.

Grazie per aver letto la mia lunga spiegazione. Ora per il codice:

"Quali sono i migliori dessert da cuocere in questo momento?"

g   a = "g   q   /b/a/" 
g l= "b = ""b r o w n i e s "
g   c = "g   /b/a/" 
g lpo= "d = ""c o o k i e s "
g   e = "c a p  "  /////
 +  "d i ""$ b "
g   f = "c a p  "  /////
 +  "d i ""$ d "
g   g = "c a p  "  /////
 + "c a p   / / /  "+ "/ / /"
di "What are the best desserts to bake right now?"

"brownies"

g a="    ba"
gl b="brownies"
    g /// 
 p="  "       
g e="   " //
 di "$b"
    cap ///
+" "  
g g="   " //
  cap ///   +"  "
i"htaetebs esrst aergtnw"

"biscotti"

    g q /// 
 ="  "        
g c="  ba"
glo d="cookies"
    cap ///
+" "  
g f="   " //
 di "$d"
    cap  ///
+ "       " ///
d Wa r h etdset obk ih o?

2

Ksh (82 caratteri)

Domanda di 35 caratteri, 5 caratteri per ogni risposta ⟹ lunghezza - payload = 37

ec=\'o'(;)eehc(h)oe cChroi m$e1;; '\'
echo  What\'s the  country\'s worst problem?

Abuso la sintassi della definizione della funzione oltre POSIX. Dash e bash non possono accettarlo, ma ksh (dominio pubblico o ATT) può farlo.

Non succede nulla di straordinario, solo un po 'di eco. Non sprecare, non voglio.


2

PowerShell 88

"" > $x;{What is my favorite equipment?};"" >> ${x}

${XsXwXoXrXdX};;;${XsXhXiXeXlXdX}

Qual è la mia attrezzatura preferita? (30 caratteri, H (X) = 4.0314)

"  x{hti yfvrt qimn?;"> {}
{sword};$XXXXXXX

spada (5 caratteri, H (X) = 2.32193)

">$;Wa sm aoieeupet}" >$x
$XXXXXX;;{shield}

scudo (5 caratteri, H (X) = 2.58496)

Nel programma completo reindirizza le stringhe vuote a una variabile inesistente ${x}(le virgolette per quelle stringhe vuote vengono utilizzate per formare una stringa senza senso che viene reindirizzata a un blocco vuoto o a una {}variabile inesistente $xnelle versioni pari / dispari), quindi stampa la domanda e dichiara 2 variabili non utilizzate (che vengono stampate e posizionate accanto a un'altra variabile non utilizzata $XXXXXXo $XXXXXXXsui diversi casi).


1

GolfScript, 51 byte

"Which are the sides of a coin? ".;""thaeialdss""

Produzione

Which are the sides of a coin? 

Come funziona

.;duplica la stringa ed elimina la copia. ""spinge una stringa vuota. thaeialdssè indefinito, quindi non fa nulla.

Caratteri dispari

"hc r h ie faci?";"heads"

Produzione

heads

Come funziona

; elimina la prima stringa dallo stack.

Anche i caratteri

Wihaetesdso  on ."tails"

Produzione

tails

Come funziona

Wihaetesdsoe onsono noops. .duplica la stringa vuota nello stack.

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.