13
\$\begingroup\$

It's well known that Brainf*ck is very bad at Kolmogorov-complexity problems, for example, it requires around 100 characters just to print "Hello world".

However, there might be texts where Brainf*ck is just very good at.

Your task is now to write a program that takes no input, and it displays the following:

That is, a smiley face (ASCII 1, if you browser does not render it).

Brainf*ck can do it in 2 characters.

+.

Try to find a language that beats it!

We assume your console can actually display that character (or your font has it, etc.).

Shortest code wins. If there are more of the same length, the first wins, but I'll upvote the others as well.

EDIT: I'm very sorry, I did not think the first post arrives this soon. A quick edit: the language has to be Turing-complete!

\$\endgroup\$
  • 4
    \$\begingroup\$ I must dispute your description of the output: While your code really outputs a character with the binary code 1, it is not ASCII-encoded, but belongs to some DOS codepage encoding like CP850 or CP437. In any modern console the smiley will not appear, because modern == UTF-8. ☺ \$\endgroup\$ – Sven Nov 9 '12 at 16:06

22 Answers 22

10
\$\begingroup\$

FALSE (2)

1,

All that reading about BF paid off! False is an ancestor of Brainfuck.

\$\endgroup\$
  • \$\begingroup\$ Ouch! Strange that no one thought of this until now. :) \$\endgroup\$ – vsz Nov 9 '12 at 7:20
  • 1
    \$\begingroup\$ I had to accept this one, as the versions with plain-text and html were not actually done with programming languages. \$\endgroup\$ – vsz Nov 17 '12 at 18:12
  • \$\begingroup\$ I tried to do it with BLC, but I can't make any sense out of BLC. And even a 1-state Turing machine needs 4 or 5 elements in the tuple. \$\endgroup\$ – luser droog Nov 17 '12 at 18:49
19
\$\begingroup\$

HTML:

It's not a really a programming language, but the shortest possible solution.

\$\endgroup\$
  • \$\begingroup\$ While it no longer fits in the rules, I'll still give a +1 because I was rushing my question and did not think of this. \$\endgroup\$ – vsz Nov 8 '12 at 18:58
  • \$\begingroup\$ If you want to call this php instead, like this answer, it would probably be okay under the new rules. \$\endgroup\$ – Matt Nov 8 '12 at 19:09
  • \$\begingroup\$ PHP will output gibberish if you simply try to use . \$\endgroup\$ – jdstankosky Nov 8 '12 at 19:37
  • \$\begingroup\$ Works in HTML+CSS, which is okay under the new rules. \$\endgroup\$ – Adám Nov 15 '16 at 0:36
11
\$\begingroup\$

plain-text, 1 char

Because html is an overkill in many situations.

(yes, I know the rules have changed)

\$\endgroup\$
11
\$\begingroup\$

Mathematica

Just for fun...

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

smileys

\$\endgroup\$
  • 1
    \$\begingroup\$ In Mma, the one char ☺ also does it \$\endgroup\$ – Dr. belisarius Nov 11 '12 at 21:01
  • \$\begingroup\$ @belisarius How do you paste without having it converted to ASCII? \$\endgroup\$ – DavidC Nov 11 '12 at 22:52
  • 1
    \$\begingroup\$ I just copy-pasted it :) \$\endgroup\$ – Dr. belisarius Nov 11 '12 at 23:07
  • \$\begingroup\$ @belisarius I also cut & pasted the icons, but for some reason the full format was shown. \$\endgroup\$ – DavidC Dec 16 '12 at 14:44
  • 1
    \$\begingroup\$ The commercial value is roughly 75 cents. The mathematical value is zilch. \$\endgroup\$ – DavidC Aug 25 '13 at 22:03
7
\$\begingroup\$

C, 18 chars

Far from beating Brainf**k, but as good as C can get (I guess).
Only works on little-endian platforms, must run without parameters.

main(c){puts(&c);}
\$\endgroup\$
7
\$\begingroup\$

Micronetics System MUMPS 4.4 (7 chars)

w $c(1)
\$\endgroup\$
  • \$\begingroup\$ MUMPS? Oh, the horror... I never even imagined that I'll see it here. +1 just for the pure shock value! \$\endgroup\$ – vsz Nov 9 '12 at 12:56
  • \$\begingroup\$ @vsz it's the only Golf suitable language I know, it often beats most common langs :) \$\endgroup\$ – DaveShaw Nov 9 '12 at 12:59
5
\$\begingroup\$

Brainf*ck (only 2 characters)

+.
\$\endgroup\$
  • \$\begingroup\$ Of course, I'll still accept a solution of length 2. \$\endgroup\$ – vsz Nov 8 '12 at 18:55
  • \$\begingroup\$ Could you explain how this works? It should output ASCII 1 which is a non-printable character. \$\endgroup\$ – nyuszika7h Oct 27 '14 at 13:58
  • \$\begingroup\$ @nyuszika7h : many consoles output a smiley for ASCII 1. \$\endgroup\$ – vsz Oct 27 '14 at 19:19
  • \$\begingroup\$ Really? I've never seen such a console. I bet they use some obscure charset. \$\endgroup\$ – nyuszika7h Oct 27 '14 at 19:21
5
\$\begingroup\$

Doesn't beat 2 chars, but:

PHP 11 chars.

<?=chr(1)?>

For everyone saying you can simply place the smiley in php and it will output :

Running it with php.exe in the command line gives Γÿǁ and placing it in the browser gives ☺

It does not work.

\$\endgroup\$
  • \$\begingroup\$ You could also go the HTML route that m0nhawk did. \$\endgroup\$ – Mr. Llama Nov 9 '12 at 17:35
  • \$\begingroup\$ @GigaWatt You cannot. It puts out gibberish using PHP. Did you even try? I tried it in the CLI and the browser. \$\endgroup\$ – jdstankosky Nov 9 '12 at 17:48
  • \$\begingroup\$ Works fine for me. ideone.com/6wYzx9 \$\endgroup\$ – Mr. Llama Nov 9 '12 at 17:56
  • \$\begingroup\$ Running it with php.exe in the command line gives Γÿǁ and placing it in the browser gives ☺ \$\endgroup\$ – jdstankosky Nov 9 '12 at 18:56
  • 2
    \$\begingroup\$ If you do a hex dump of your file, you'll see that it was saved as unicode representation of a smiley (\xE298BA), not as \x01. Try manually making a file with a single \x01 byte in it and running it from the command line with PHP. \$\endgroup\$ – Mr. Llama Nov 9 '12 at 21:04
5
\$\begingroup\$

DC - 2 characters

1P

It doesn't require any explanation.

\$\endgroup\$
4
\$\begingroup\$

PHP (1)

Technically this is a valid PHP file (a web server will happily serve it).

\$\endgroup\$
3
\$\begingroup\$

Golfscript, 3 characters

"☺"

Not a golfscript expert, but I don't believe there is a way to convert an integer into the corresponding ASCII character using only 1 character, so it seems like this is the shortest it can get

\$\endgroup\$
2
\$\begingroup\$

J (3 chars)

'☺'

The code require appropriate font.

According to Wikipedia

In the Wingdings font, the letter "J" is rendered as a smiley face (note this is distinct from the Unicode code point U+263A, which renders as ☺).

\$\endgroup\$
  • \$\begingroup\$ Another variation is u:1. \$\endgroup\$ – FireFly Oct 8 '13 at 21:30
2
\$\begingroup\$

Q/k (9 chars)

Can't do it in 2 unfortunately.

-1"\001";

I seem to recall a bug in an older version of the interpreter which produced the other smile symbol in less characters. I'll look it up.

Edit: found the quirk. It only appears to work on windows versions of the interpreter:

q)1(1b);
☺
\$\endgroup\$
2
\$\begingroup\$

Ruby - 6

$><<?☺

$> is stdout, << is the flux operator, and ?☺ is the same as '☺'

\$\endgroup\$
2
\$\begingroup\$

LaTeX (51/77 characters)

Short solution

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

Good solution (Compile with latex main.tex):

\documentclass{book}
\usepackage{wasysym}
\begin{document}
\smiley
\end{document}
\$\endgroup\$
  • \$\begingroup\$ The first one does not work because pure LaTeX cannot read unicode chars. Oddly enough, this does not work neither in XeLaTeX, nor in LuaLaTeX because the default font table does not contain this symbol. Please consider this: \documentclass{book} \usepackage{fontspec} \setmainfont{DejaVu Sans} \begin{document}☺\end{document} — and please specify the rendering engine you are using (pdfLaTeX) in the “good” solution. \$\endgroup\$ – Andreï Kostyrka Nov 14 '16 at 16:57
1
\$\begingroup\$

Burlesque - 6 Characters

,1L[sh

Explanation:

, pops stdin. 1L[ pushes one and convert to char (by codepoint) sh is used to switch to pretty format. (Otherwise it would print a leading ').

\$\endgroup\$
1
\$\begingroup\$

Tcl, 1

Displays a ☺ with some other stuff.
There are rumors that this also works with PHP or other languages.

\$\endgroup\$
1
\$\begingroup\$

Arduino, 24

char a=1;Serial.print(a)
\$\endgroup\$
0
\$\begingroup\$

Perl 6 (7 chars)

say '☺'

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

\$\endgroup\$
  • 3
    \$\begingroup\$ Are you sure you need that space character? \$\endgroup\$ – J B Aug 28 '13 at 21:46
0
\$\begingroup\$

plain TeX (5 chars):

Other my answer, now on plain TeX:

☺\bye
\$\endgroup\$
  • \$\begingroup\$ Does not work because pure TeX is ASCII-only. \$\endgroup\$ – Andreï Kostyrka Nov 14 '16 at 16:58
0
\$\begingroup\$

JavaScript, 10 Bytes

alert("☺")

enter image description here

\$\endgroup\$
0
\$\begingroup\$

SmileBASIC, 3 characters

?"☺

​​

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.