Uśmiech! Uśmiechnij się

16

Powszechnie wiadomo, że Brainf * ck bardzo źle radzi sobie z problemami złożoności Kołmogorowa, na przykład wymaga około 100 znaków, aby wydrukować „Witaj świecie”.

Mogą jednak istnieć teksty, w których Brainf * ck jest po prostu bardzo dobry.

Twoim zadaniem jest teraz napisanie programu, który nie przyjmuje danych wejściowych i wyświetla następujące informacje:

Oznacza to uśmiechniętą twarz (ASCII 1, jeśli przeglądarka jej nie renderuje).

Brainf * ck może to zrobić za pomocą 2 znaków.

+.

Spróbuj znaleźć język, który go bije!

Zakładamy, że twoja konsola może faktycznie wyświetlać ten znak (lub twoja czcionka go ma, itp.).

Najkrótszy kod wygrywa. Jeśli jest więcej tej samej długości, pierwsze wygrywają, ale będę również głosować za innymi.

EDYCJA: Bardzo przepraszam, nie sądziłem, że pierwszy post nadejdzie tak szybko. Szybka edycja: język musi być kompletny w Turingu!

vsz
źródło
7
Muszę zakwestionować twój opis wyniku: chociaż twój kod naprawdę wypisuje znak z kodem binarnym 1, nie jest on zakodowany w ASCII, ale należy do kodowania strony kodowej DOS, takiego jak CP850 lub CP437. W żadnej nowoczesnej konsoli buźka nie pojawi się, ponieważ modern == UTF-8. ☺
Sven

Odpowiedzi:

10

FAŁSZ (2)

1,

Całe to czytanie o BF się opłaciło! False jest przodkiem Brainfuck.

luser droog
źródło
Auć! Dziwne, że nikt dotąd o tym nie myślał. :)
vsz
1
Musiałem to zaakceptować, ponieważ wersje z zwykłym tekstem i HTML nie były w rzeczywistości zrobione z językami programowania.
vsz
Próbowałem to zrobić z BLC, ale nie mogę zrozumieć BLC. I nawet 1-stanowa maszyna Turinga potrzebuje 4 lub 5 elementów w krotce.
luser droog
12

Matematyka

Dla żartu...

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

buźki

DavidC
źródło
1
W Mma, jeden znak does również to robi
dr belisarius,
@belisarius Jak wkleić bez konwersji do ASCII?
DavidC,
1
Właśnie go
wkleiłem
@belisarius Też wyciąłem i wkleiłem ikony, ale z jakiegoś powodu pokazany został pełny format.
DavidC
1
Wartość handlowa wynosi około 75 centów. Wartość matematyczna to Zilch.
DavidC,
8

C, 18 znaków

Dalekie od pokonania Brainf ** k, ale tak dobre, jak C może uzyskać (tak sądzę).
Działa tylko na platformach little-endian, musi działać bez parametrów.

main(c){puts(&c);}
ugoren
źródło
7

System Micronetics MUMPS 4.4 (7 znaków)

w $c(1)
DaveShaw
źródło
ŚWINKA? Och, horror ... Nigdy nawet nie wyobrażałem sobie, że go tu zobaczę. +1 tylko za czystą wartość szoku!
vsz
@vsz to jedyny język odpowiedni dla golfa, jaki znam, często bije najczęstsze języki :)
DaveShaw
5

Brainf * ck (tylko 2 znaki)

+.
vsz
źródło
Oczywiście nadal przyjmę rozwiązanie o długości 2
vsz
Czy możesz wyjaśnić, jak to działa? Powinien on wypisać ASCII 1, który nie jest drukowalny.
nyuszika7h
@ nyuszika7h: wiele konsol generuje buźkę dla ASCII 1.
vsz
1
Naprawdę? Nigdy nie widziałem takiej konsoli. Założę się, że używają niejasnego zestawu znaków.
nyuszika7h
5

Nie bije 2 znaków, ale:

PHP 11 znaków.

<?=chr(1)?>

Dla każdego, kto mówi, że możesz po prostu umieścić buźkę w php, a wyświetli się :

Uruchomienie go z php.exe w wierszu poleceń daje Γÿǁi umieszczenie go w przeglądarce daje☺

To nie działa

jdstankosky
źródło
Możesz także przejść ścieżką HTML, którą zrobiła m0nhawk.
Pan Llama,
@GigaWatt Nie możesz. Wydaje bełkot przy użyciu PHP. Próbowałeś nawet? Próbowałem w CLI i przeglądarce.
jdstankosky
Działa dobrze dla mnie. ideone.com/6wYzx9
Mr. Llama,
Uruchamianie go z php.exe w wierszu poleceń daje Γÿǁi umieszczanie go w przeglądarce daje☺
jdstankosky
2
Jeśli zrobisz zrzut pliku w formacie szesnastkowym, zobaczysz, że został on zapisany jako unicode reprezentacja smiley ( \xE298BA), a nie jako \x01. Spróbuj ręcznie utworzyć plik z jednym \x01bajtem i uruchomić go z wiersza poleceń za pomocą PHP.
Pan Llama,
5

DC - 2 znaki

1P

Nie wymaga żadnego wyjaśnienia.

Fors
źródło
4

Golfscript, 3 znaki

"☺"

Nie jestem ekspertem w dziedzinie gry w golfa, ale nie sądzę, aby można było przekonwertować liczbę całkowitą na odpowiedni znak ASCII za pomocą tylko 1 znaku, więc wygląda na to, że jest to najkrótsza możliwa do uzyskania

Strigoides
źródło
4

PHP (1)

Technicznie jest to prawidłowy plik PHP (serwer WWW z przyjemnością go obsłuży).

Peter C.
źródło
3

LaTeX (51/77 znaków)

Krótkie rozwiązanie

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

Dobre rozwiązanie (Kompiluj z latex main.tex):

\documentclass{book}
\usepackage{wasysym}
\begin{document}
\smiley
\end{document}
Martin Thoma
źródło
Pierwszy nie działa, ponieważ czysty LaTeX nie może odczytać znaków Unicode. O dziwo, nie działa to ani w XeLaTeX, ani w LuaLaTeX, ponieważ domyślna tabela czcionek nie zawiera tego symbolu. Rozważ to: \documentclass{book} \usepackage{fontspec} \setmainfont{DejaVu Sans} \begin{document}☺\end{document}- i określ silnik renderowania, którego używasz (pdfLaTeX) w „dobrym” rozwiązaniu.
Andreï Kostyrka
2

J (3 znaki)

'☺'

Kod wymaga odpowiedniej czcionki.

Według Wikipedii

W czcionce Wingdings litera „J” jest renderowana jako buźka (zwróć uwagę, że różni się ona od punktu kodowego U + 263A w ​​Unicode, który jest renderowany jako ☺).

P̲̳x͓L̳
źródło
Inna odmiana to u:1.
FireFly,
2

Q / k (9 znaków)

Niestety nie da się tego zrobić w 2.

-1"\001";

Wydaje mi się, że pamiętam błąd w starszej wersji interpretera, który spowodował, że drugi symbol uśmiechu zawierał mniej znaków. Sprawdzę to.

Edycja: znaleziono dziwactwo. Wydaje się, że działa tylko w wersjach Windows interpretera:

q)1(1b);
☺
skeevey
źródło
1

Burleska - 6 znaków

,1L[sh

Wyjaśnienie:

,wyskakuje stdin. 1L[wypycha jeden i konwertuje na char (przez codepoint) shsłuży do przełączania do ładnego formatu. (W przeciwnym razie wydrukowałby wiodący ').

mroman
źródło
1

Tcl, 1

Wyświetla ☺ z innymi rzeczami.
Krążą plotki, że działa to również z PHP lub innymi językami.

Johannes Kuhn
źródło
1

Arduino, 24

char a=1;Serial.print(a)
Timtech
źródło
1

Beczka , 2 znaki

Naciśnij cyfrę 1 i wydrukuj ją. (Zaskoczony, że 1,to działa; -1 z Lyxal.)

1,

Wypróbuj online!

Beczka , 1 znak

Beczka jest właściwie zakończona przez Turinga, a każde nierozpoznane polecenie działa jak push na stos.

Wypróbuj online!

za'_'
źródło
W rzeczywistości 1,robi to 2 bajty.
Lyxal
1

05AB1E , 2 znaki

Po prostu nudne kodowanie. Jest zakodowany w CP437.

"☺

Wypróbuj online!

05AB1E , 2 bajty

Wypróbuj online!

za'_'
źródło
Możesz dołączyć kodowania. Najlepsza odpowiedź to tylko 2 bajty w kodowaniu takim jak CP850 lub CP437, który zawiera zarówno znaki, jak i "ich stronę kodową. Ale przy użyciu kodowania 05AB1E najwyższa odpowiedź nie jest nawet możliwa, a przy użyciu kodowania UTF-8 byłoby to 4 bajty.
Kevin Cruijssen
Wyzwanie mówi, że znaki są poprawnym systemem kodowania ...
a'_ '20
1

Stax , 2 bajty

1]

Uruchom i debuguj

Nanajnaiojneg
źródło
Stax ]nie działa przedrostkiem - wyskakuje element ze stosu i tworzy z niego listę. Więc możesz ewentualnie potrzebować 1]programu.
a'_ '20
1

chevron - 4 bajty / 2 runy

>☺
Superloach
źródło
0

Perl 6 (7 znaków)

say '☺'

Trochę naginam reguły, zakładając, że \ n jest mile widziany, aby uniknąć bałaganu powłoki.

gfldex
źródło
4
Czy na pewno potrzebujesz tej spacji?
JB
0

JavaScript, 10 bajtów

alert("☺")

wprowadź opis zdjęcia tutaj

Pete Arden
źródło
0

SmileBASIC, 3 znaki

?"☺

W pobliżu

12Me21
źródło
0

PowerShell , 5 bajtów

jeśli program powinien wypisać znak uśmiechu na twarzy.

'☺'

Wypróbuj online!


PowerShell , 7 bajtów

jeśli program powinien wypisać znak z kodem 1.

[char]1

Wypróbuj online!

mazzy
źródło
1
Dlaczego nie tylko '☺'? Nawiasem mówiąc, twarz nie jest renderowana dla mnie w TIO lub konsoli
IT Delinquent
ponieważ kod uśmiechniętej twarzy nie ma w Powershell 1. Wypróbuj online!
mazzy
1
Czy twoja odpowiedź powinna brzmieć „[Char] 9786”? Jestem naprawdę zdezorientowany :-D
IT Delinquent
1
Ha! Masz rację. Myślałem, że napiszę program, który wypisuje znak z kodem 1. Ale możesz to zinterpretować jako pisanie programu, który wyświetla buźkę.
mazzy
0

Gol> <> , 2 bajty

1H

Wypróbuj online!

Tylko dla kompletności. Naciśnij pojedynczy 1, wydrukuj całą zawartość jako znaki i zatrzymaj się.

Bubbler
źródło
0

MineFriff , 5 bajtów

C1,o;

Wypróbuj online!

Po prostu:

  • Traktuj rejestr temp jako znak
  • Dodaj jeden do rejestru i naciśnij
  • Wyjmij najwyższy przedmiot i zakończ.
Lyxal
źródło