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!


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.


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


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);}

7

System Micronetics MUMPS 4.4 (7 znaków)

w $c(1)

Ś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)

+.

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


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,


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


4

PHP (1)

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


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}

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 ☺).


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);
☺


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 ').


1

Tcl, 1

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




1

05AB1E , 2 znaki

Po prostu nudne kodowanie. Jest zakodowany w CP437.

"☺

Wypróbuj online!

05AB1E , 2 bajty

Wypróbuj online!


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



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.


4
Czy na pewno potrzebujesz tej spacji?
JB



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!


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



Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.