Sorridi! Sorridi e basta


16

È noto che Brainf * ck è pessimo per i problemi di complessità di Kolmogorov, ad esempio, richiede solo 100 caratteri solo per stampare "Hello world".

Tuttavia, potrebbero esserci dei testi in cui Brainf * ck è molto bravo a farlo.

Il tuo compito è ora di scrivere un programma che non accetta input e visualizza quanto segue:

Cioè, una faccina sorridente (ASCII 1, se il browser non la visualizza).

Brainf * ck può farlo in 2 caratteri.

+.

Prova a trovare una lingua che la batte!

Partiamo dal presupposto che la tua console può effettivamente visualizzare quel personaggio (o il tuo carattere ce l'ha, ecc.).

Il codice più corto vince. Se ce ne sono più della stessa lunghezza, il primo vince, ma voterò anche gli altri.

EDIT: Mi dispiace molto, non pensavo che il primo post arrivasse così presto. Una rapida modifica: la lingua deve essere Turing completa!


7
Devo contestare la tua descrizione dell'output: mentre il tuo codice emette davvero un carattere con il codice binario 1, non è codificato in ASCII, ma appartiene ad alcune codifiche di codepage DOS come CP850 o CP437. In qualsiasi console moderna lo smile non apparirà, perché modern == UTF-8. ☺
Sven,

Risposte:


10

FALSO (2)

1,

Tutta quella lettura di BF ha dato i suoi frutti! False è un antenato di Brainfuck.


Ahia! Strano che nessuno ci abbia pensato fino ad ora. :)
vsz

1
Ho dovuto accettare questo, poiché le versioni con testo in chiaro e HTML non erano effettivamente fatte con i linguaggi di programmazione.
vsz

Ho provato a farlo con BLC, ma non riesco a dare un senso a BLC. E anche una macchina di Turing a 1 stato ha bisogno di 4 o 5 elementi nella tupla.
Luser droog

19

HTML:

Non è davvero un linguaggio di programmazione, ma la soluzione più breve possibile.


1
Anche se non rientra più nelle regole, darò comunque un +1 perché stavo affrettando la mia domanda e non ci ho pensato.
vsz

Se invece vuoi chiamare questo php, come questa risposta, probabilmente andrebbe bene secondo le nuove regole.
Matt,

PHP produrrà incomprensibili se provi semplicemente ad usare .
jdstankosky

Funziona in HTML + CSS, il che va bene secondo le nuove regole.
Adám,

@ Adám Le regole per questa sfida richiedono Turing Completezza, che il link che hai pubblicato non dimostra.
pepery

12

matematica

Solo per divertimento...

"\[HappySmiley]"
"\[NeutralSmiley]"
"\[SadSmiley]"
"\[FreakedSmiley]"

smileys


1
In Mma, anche l'unico personaggio lo fa
Dr. belisarius,

@belisarius Come si incolla senza averlo convertito in ASCII?
DavidC,

1
L'ho appena incollato :)
Dr. belisarius,

@belisarius Ho anche tagliato e incollato le icone, ma per qualche motivo è stato mostrato il formato completo.
DavidC

1
Il valore commerciale è di circa 75 centesimi. Il valore matematico è zilch.
DavidC

11

testo semplice, 1 carattere

Perché html è eccessivo in molte situazioni.

(sì, so che le regole sono cambiate)


il testo in chiaro non sta diventando completo, rendendo questa risposta non valida.
pepery

8

C, 18 caratteri

Lungi dal battere Brainf ** k, ma buono come C (immagino).
Funziona solo su piattaforme little-endian, deve essere eseguito senza parametri.

main(c){puts(&c);}

7

Micronetics System MUMPS 4.4 (7 caratteri)

w $c(1)

PAROTITE? Oh, l'orrore ... Non avrei nemmeno immaginato di vederlo qui. +1 solo per il puro valore di shock!
vsz

@vsz è l'unica lingua adatta per il golf che conosco, spesso batte le lingue più comuni :)
DaveShaw

5

Brainf * ck (solo 2 caratteri)

+.

Certo, accetterò comunque una soluzione di lunghezza 2.
vsz

Potresti spiegare come funziona? Dovrebbe essere visualizzato ASCII 1 che è un carattere non stampabile.
nyuszika7h,

@ nyuszika7h: molte console emettono un emoticon per ASCII 1.
vsz

1
Veramente? Non ho mai visto una console del genere. Scommetto che usano un set di caratteri oscuro.
nyuszika7h,

5

Non batte 2 caratteri, ma:

PHP 11 caratteri.

<?=chr(1)?>

Per tutti coloro che dicono che puoi semplicemente posizionare lo smiley in php e verrà emesso :

Eseguirlo con php.exe nella riga di comando dà Γÿǁe posizionandolo nel browser dà☺

Esso non funziona.


Potresti anche seguire il percorso HTML che ha fatto m0nhawk.
Mr. Llama,

@GigaWatt Non puoi. Esce senza senso usando PHP. Ci hai provato? L'ho provato nella CLI e nel browser.
jdstankosky,

Funziona bene per me. ideone.com/6wYzx9
Mr. Llama

Eseguendolo con php.exe nella riga di comando si ottiene Γÿǁe posizionandolo nel browser si ottiene☺
jdstankosky

2
Se esegui un dump esadecimale del tuo file, vedrai che è stato salvato come rappresentazione unicode di uno smiley ( \xE298BA), non come \x01. Prova a creare manualmente un file con un singolo \x01byte e eseguilo dalla riga di comando con PHP.
Mr. Llama,

5

DC - 2 caratteri

1P

Non richiede alcuna spiegazione.


4

Golfscript, 3 caratteri

"☺"

Non un esperto di golfscript, ma non credo che ci sia un modo per convertire un numero intero nel corrispondente carattere ASCII usando solo 1 carattere, quindi sembra che questo sia il più breve che può ottenere


4

PHP (1)

Tecnicamente questo è un file PHP valido (un server web lo servirà felicemente).


3

LaTeX (51/77 caratteri)

Soluzione breve

\documentclass{book}
\begin{document}
☺
\end{document}

Buona soluzione (compilare con latex main.tex):

\documentclass{book}
\usepackage{wasysym}
\begin{document}
\smiley
\end{document}

Il primo non funziona perché LaTeX puro non è in grado di leggere i caratteri unicode. Stranamente, questo non funziona né in XeLaTeX, né in LuaLaTeX perché la tabella dei caratteri predefinita non contiene questo simbolo. Si prega di considerare questo: \documentclass{book} \usepackage{fontspec} \setmainfont{DejaVu Sans} \begin{document}☺\end{document}- e specificare il motore di rendering che si sta utilizzando (pdfLaTeX) nella soluzione "buona".
Andreï Kostyrka,

2

J (3 caratteri)

'☺'

Il codice richiede un carattere appropriato.

Secondo Wikipedia

Nel carattere Wingdings, la lettera "J" viene visualizzata come una faccina (si noti che è distinta dal punto di codice Unicode U + 263A, che viene visualizzato come ☺).


Un'altra variazione è u:1.
FireFly

2

Q / k (9 caratteri)

Purtroppo non è possibile farlo in 2.

-1"\001";

Mi sembra di ricordare un bug in una versione precedente dell'interprete che ha prodotto l'altro simbolo del sorriso in meno caratteri. Lo cercherò.

Modifica: trovata la stranezza. Sembra funzionare solo sulle versioni di Windows dell'interprete:

q)1(1b);
☺


1

Burlesque - 6 personaggi

,1L[sh

Spiegazione:

,apre stdin. 1L[ne preme uno e la conversione in char (tramite codepoint) shviene utilizzata per passare al formato grazioso. (Altrimenti verrebbe stampato un vantaggio ').


1

Tcl, 1

Visualizza un ☺ con alcune altre cose.
Si dice che questo funzioni anche con PHP o altre lingue.



1

Fusto , 2 caratteri

Premere il numero 1 e stamparlo. (Sorpreso che 1,funziona anche; -1 da Lyxal.)

1,

Provalo online!

Keg , 1 personaggio

Keg è in realtà Turing-complete e qualsiasi comando non riconosciuto funge da push sulla pila.

Provalo online!


In realtà lo sta 1,facendo 2 byte.
Lyxal

1

05AB1E , 2 caratteri

Solo un noioso hard-coding. È codificato in CP437.

"☺

Provalo online!

05AB1E , 2 byte

Provalo online!


Potresti voler includere le codifiche. La risposta migliore è di soli 2 byte in una codifica come CP850 o CP437, che contiene sia i caratteri che la "loro tabella codici. Ma usando la codifica 05AB1E, la risposta migliore non è nemmeno possibile, e usando la codifica UTF-8 sarebbe di 4 byte.
Kevin Cruijssen

La sfida dice che i personaggi sono un sistema di codifica valido ...
a'_ '



0

Perl 6 (7 chars)

say '☺'

I'm bending the rules a little by assuming that a \n is welcome to avoid shell prompt mess.


4
Are you sure you need that space character?
J B

0

plain TeX (5 chars):

Other my answer, now on plain TeX:

☺\bye

Does not work because pure TeX is ASCII-only.
Andreï Kostyrka



0

PowerShell, 5 bytes

if a program should output the smile face char.

'☺'

Try it online!


PowerShell, 7 bytes

if a program should output the char with code 1.

[char]1

Try it online!


1
Why not just '☺' ? By the way, the face isn't rendered for me in TIO or the console
I.T Delinquent

because the code for the smile face is not 1 in the Powershell. Try it online!
mazzy

1
Should your answer be '[Char]9786' instead then? I'm really confused :-D
I.T Delinquent

1
Ha! You are right. I thought I'd write a program that outputs a character with code 1. But you can interpret it as writing a program that outputs a smiley face.
mazzy

0

W, 2 bytes

After the chr function, this actually returns a smiley face! (Because W uses CP437)

1C

A few more 2-byters:

☺"
'☺


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.