Sourire! Souriez simplement

16

Il est bien connu que Brainf * ck est très mauvais face aux problèmes de complexité de Kolmogorov, par exemple, il nécessite environ 100 caractères juste pour imprimer "Hello world".

Cependant, il pourrait y avoir des textes où Brainf * ck est tout simplement très bon.

Votre tâche consiste maintenant à écrire un programme qui ne prend aucune entrée, et il affiche ce qui suit:

Autrement dit, un visage souriant (ASCII 1, si votre navigateur ne le rend pas).

Brainf * ck peut le faire en 2 caractères.

+.

Essayez de trouver une langue qui la bat!

Nous supposons que votre console peut réellement afficher ce caractère (ou votre police l'a, etc.).

Le code le plus court gagne. S'il y en a plus de la même longueur, le premier gagne, mais je voterai aussi pour les autres.

EDIT: Je suis vraiment désolé, je ne pensais pas que le premier message arriverait si tôt. Un montage rapide: la langue doit être complète de Turing!

vsz
la source
7
Je dois contester votre description de la sortie: Bien que votre code génère réellement un caractère avec le code binaire 1, il n'est pas codé en ASCII, mais appartient à un codage de page de code DOS comme CP850 ou CP437. Dans toute console moderne, le smiley n'apparaîtra pas, car moderne == UTF-8. ☺
Sven

Réponses:

10

FAUX (2)

1,

Toute cette lecture sur BF a porté ses fruits! False est un ancêtre de Brainfuck.

luser droog
la source
Aie! Étrange que personne n'y ait pensé jusqu'à présent. :)
vsz
1
J'ai dû accepter celui-ci, car les versions avec texte brut et html n'étaient pas réellement faites avec les langages de programmation.
vsz
J'ai essayé de le faire avec BLC, mais je ne peux pas donner de sens à BLC. Et même une machine de Turing à 1 état a besoin de 4 ou 5 éléments dans le tuple.
luser droog
19

HTML:

Ce n'est pas vraiment un langage de programmation, mais la solution la plus courte possible.


la source
1
Bien que cela ne rentre plus dans les règles, je donnerai toujours un +1 car je précipitais ma question et je n'y pensais pas.
vsz
Si vous voulez appeler ce php à la place, comme cette réponse, ce serait probablement bien avec les nouvelles règles.
Matt
PHP affichera du charabia si vous essayez simplement de l'utiliser .
jdstankosky
Fonctionne en HTML + CSS, ce qui est correct avec les nouvelles règles.
Adám
@ Adám Les règles de ce défi exigent l'exhaustivité de Turing, ce que le lien que vous avez publié ne prouve pas.
pppery
12

Mathematica

Juste pour le fun...

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

smileys

DavidC
la source
1
À Mma, le char does le fait aussi
Dr belisarius
@belisarius Comment collez-vous sans le convertir en ASCII?
DavidC
1
Je viens de le copier-coller :)
Dr belisarius
@belisarius J'ai également coupé et collé les icônes, mais pour une raison quelconque, le format complet a été affiché.
DavidC
1
La valeur commerciale est d'environ 75 cents. La valeur mathématique est zilch.
DavidC
11

texte brut, 1 caractère

Parce que le HTML est une exagération dans de nombreuses situations.

(oui, je sais que les règles ont changé)

bébé-lapin
la source
le texte brut ne devient pas complet, rendant cette réponse invalide.
pppery
8

C, 18 caractères

Loin de battre Brainf ** k, mais aussi bon que C peut l'être (je suppose).
Fonctionne uniquement sur les plateformes little-endian, doit fonctionner sans paramètres.

main(c){puts(&c);}
ugoren
la source
7

Système Micronetics MUMPS 4.4 (7 caractères)

w $c(1)
DaveShaw
la source
OREILLONS? Oh, l'horreur ... Je n'ai même jamais imaginé que je le verrais ici. +1 juste pour la valeur de choc pur!
vsz
@vsz c'est la seule langue adaptée au golf que je connaisse, elle bat souvent la plupart des langues courantes :)
DaveShaw
5

Brainf * ck (seulement 2 caractères)

+.
vsz
la source
Bien sûr, j'accepterai toujours une solution de longueur 2.
vsz
Pourriez-vous expliquer comment cela fonctionne? Il doit sortir ASCII 1 qui est un caractère non imprimable.
nyuszika7h
@ nyuszika7h: de nombreuses consoles affichent un smiley pour ASCII 1.
vsz
1
Vraiment? Je n'ai jamais vu une telle console. Je parie qu'ils utilisent un charset obscur.
nyuszika7h
5

Ne bat pas 2 caractères, mais:

Caractères PHP 11.

<?=chr(1)?>

Pour tout le monde disant que vous pouvez simplement placer le smiley en php et il sortira :

L'exécuter avec php.exe dans la ligne de commande donne Γÿǁet le placer dans le navigateur donne☺

Ça ne marche pas .

jdstankosky
la source
Vous pouvez également suivre la route HTML utilisée par m0nhawk.
M. Llama
@GigaWatt Vous ne pouvez pas. Il met du charabia en utilisant PHP. Avez-vous même essayé? Je l'ai essayé dans la CLI et le navigateur.
jdstankosky
Fonctionne bien pour moi. ideone.com/6wYzx9
M. Llama
L'exécuter avec php.exe dans la ligne de commande donne Γÿǁet le placer dans le navigateur donne☺
jdstankosky
2
Si vous faites un vidage hexadécimal de votre fichier, vous verrez qu'il a été enregistré en tant que représentation unicode d'un smiley ( \xE298BA), pas en tant que \x01. Essayez de créer manuellement un fichier avec un seul \x01octet et de l'exécuter à partir de la ligne de commande avec PHP.
M. Llama
5

DC - 2 caractères

1P

Cela ne nécessite aucune explication.

Fors
la source
4

Golfscript, 3 caractères

"☺"

Pas un expert de golfscript, mais je ne pense pas qu'il existe un moyen de convertir un entier en caractère ASCII correspondant en utilisant seulement 1 caractère, il semble donc que ce soit le plus court possible

Strigoides
la source
4

PHP (1)

Techniquement, c'est un fichier PHP valide (un serveur Web le servira avec plaisir).

Peter C
la source
3

LaTeX (51/77 caractères)

Solution courte

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

Bonne solution (compiler avec latex main.tex):

\documentclass{book}
\usepackage{wasysym}
\begin{document}
\smiley
\end{document}
Martin Thoma
la source
Le premier ne fonctionne pas car Pure LaTeX ne peut pas lire les caractères Unicode. Curieusement, cela ne fonctionne ni dans XeLaTeX, ni dans LuaLaTeX car la table de polices par défaut ne contient pas ce symbole. Veuillez considérer ceci: \documentclass{book} \usepackage{fontspec} \setmainfont{DejaVu Sans} \begin{document}☺\end{document}- et veuillez spécifier le moteur de rendu que vous utilisez (pdfLaTeX) dans la «bonne» solution.
Andreï Kostyrka
2

J (3 caractères)

'☺'

Le code nécessite une police appropriée.

Selon Wikipedia

Dans la police Wingdings, la lettre "J" est rendue sous la forme d'un visage souriant (notez que cela est distinct du point de code Unicode U + 263A, qui s'affiche comme ☺).

P̲̳x͓L̳
la source
Une autre variante est u:1.
FireFly du
2

Q / k (9 caractères)

Je ne peux pas le faire en 2 malheureusement.

-1"\001";

Il semble que je me souvienne d'un bug dans une ancienne version de l'interpréteur qui produisait l'autre symbole de sourire en moins de caractères. Je vais le chercher.

Edit: trouvé la bizarrerie. Il ne semble fonctionner que sur les versions Windows de l'interpréteur:

q)1(1b);
☺
skeevey
la source
1

Burlesque - 6 personnages

,1L[sh

Explication:

,pop stdin. 1L[pousse un et convertir en char (par codepoint) shest utilisé pour passer au joli format. (Sinon, il imprimerait un interligne ').

mroman
la source
1

Tcl, 1

Affiche un ☺ avec d'autres éléments.
Il y a des rumeurs selon lesquelles cela fonctionne également avec PHP ou d'autres langages.

Johannes Kuhn
la source
1

Arduino, 24

char a=1;Serial.print(a)
Timtech
la source
1

Keg , 2 caractères

Appuyez sur le chiffre 1 et imprimez-le. (Surpris ça 1,marche aussi; -1 de Lyxal.)

1,

Essayez-le en ligne!

Keg , 1 caractère

Keg est en fait Turing-complete, et toute commande non reconnue agit comme une poussée sur la pile.

Essayez-le en ligne!

une'_'
la source
Cela fait 1,en fait 2 octets.
Lyxal
1

05AB1E , 2 caractères

Juste un codage dur ennuyeux. Il est encodé en CP437.

"☺

Essayez-le en ligne!

05AB1E , 2 octets

Essayez-le en ligne!

une'_'
la source
Vous voudrez peut-être inclure les encodages. Votre première réponse n'est que de 2 octets dans un codage comme CP850 ou CP437, qui contient à la fois les caractères et "leur page de codes. Mais en utilisant l'encodage 05AB1E, la première réponse n'est même pas possible, et en utilisant l'encodage UTF-8, ce serait 4 octets.
Kevin Cruijssen
Le défi dit que les caractères sont un système de codage valide ...
a'_ '20
1

Stax , 2 octets

1]

Exécuter et déboguer

Nanajnaiojneg
la source
Le Stax ]ne fonctionne pas de manière préfixe - il extrait un élément de la pile et crée une liste à partir de celui-ci. Ainsi, vous pourriez également avoir besoin 1]du programme.
le
1

chevron - 4 octets / 2 runes

>☺
Superloach
la source
0

Perl 6 (7 caractères)

say '☺'

Je plie un peu les règles en supposant qu'un \ n est le bienvenu pour éviter le désordre des invites du shell.

gfldex
la source
4
Êtes-vous sûr d'avoir besoin de ce caractère d'espace?
JB
0

TeX simple (5 caractères):

Autre ma réponse, maintenant sur plain TeX:

☺\bye

la source
Ne fonctionne pas car Pure TeX est uniquement ASCII.
Andreï Kostyrka
0

JavaScript, 10 octets

alert("☺")

enter image description here

Pete Arden
la source
0

SmileBASIC, 3 caractères

?"☺

La

12Me21
la source
0

PowerShell , 5 octets

si un programme doit afficher le caractère du visage souriant.

'☺'

Essayez-le en ligne!


PowerShell , 7 octets

si un programme doit sortir le caractère avec le code 1.

[char]1

Essayez-le en ligne!

mazzy
la source
1
Pourquoi pas juste '☺'? Soit dit en passant, le visage n'est pas rendu pour moi dans TIO ou la console
IT Delinquent
parce que le code pour le visage souriant n'est pas 1 dans le Powershell. Essayez-le en ligne!
mazzy
1
Votre réponse devrait-elle plutôt être «[Char] 9786»? Je suis vraiment confus :-D
IT Delinquent
1
Ha! Tu as raison. Je pensais que j'écrirais un programme qui génère un caractère avec le code 1. Mais vous pouvez l'interpréter comme l'écriture d'un programme qui génère un visage souriant.
mazzy
0

W , 2 octets

Après la fonction chr, cela retourne en fait un visage souriant! (Parce que W utilise CP437)

1C

Quelques 2 octets de plus:

☺"
'☺
une'_'
la source
0

MineFriff , 5 octets

C1,o;

Essayez-le en ligne!

Simplement:

  • Traitez le registre temporaire comme un caractère
  • Ajoutez-en un au registre et appuyez sur
  • Sortez l'élément supérieur et terminez.
Lyxal
la source