CodeGolf - Heads or Tails

26

Instrukcje

Biorąc nieznaną ciąg wejściowy io wartości zarówno głowic lub ogonów , powrót 1do głowy lub -1za ogony z najkrótszego kodu.

Przykładowy kod bez golfa (55b):

if(i == "heads"){
    print(1);
}else{
    print(-1);
}

Przykładowy kod do gry w golfa (16b):

print("t">i||-1)


Javascript został wykorzystany dla przykładu, ale to nie wymóg . Przepraszamy, jeśli jest zbyt prosty dla większości użytkowników, można go ulepszyć.

Juan Cortés
źródło
14
Witamy w PPCG! Jest to zbyt proste, by stanowić ciekawe wyzwanie. W przyszłości zastanów się nad publikowaniem wyzwań w piaskownicy , gdzie mogą uzyskać opinie przed opublikowaniem ich na żywo.
Alex A.
1
6 odpowiedzi, nie jest to wcale takie złe wyzwanie. Spróbuj ponownie
edc65
4
Przy 4 głosach pozytywnych i 5 głosach negatywnych twoje pytanie nie było tak naprawdę niepopularne; to po prostu mieszane recenzje. Chociaż przedmiotowe zadanie jest nieco podstawowe, jest dobrze zdefiniowane i przyciąga do tej pory 7 odpowiedzi, które obejmują kilka różnych podejść. Nieźle jak na pierwszą próbę.
Dennis
7
Jestem tak zdezorientowany teraz, wczoraj -4, teraz +4, to z pewnością nie jest
Juan Cortés
10
Od wieków czekałem na takie krótkie wyzwanie, większość wyzwań jest zbyt długa i skomplikowana dla takiego początkującego jak ja.
Sean Latham

Odpowiedzi:

11

CJam, 4 bajty

I'e#

Zakłada, że ​​zmienna Iprzechowuje dane wejściowe, ponieważ inie jest poprawnym identyfikatorem w CJam.

Wypróbuj online.

Jest to równoważne z kodem JavaScript I.indexOf('e').

Dennis
źródło
Prawdopodobnie nie do pokonania w tym wyzwaniu.
Alex A.
1
Przepraszam, że nie zrozumiałem wystarczająco wymagań i z tego powodu zrobiłem z siebie głupka. Wrócę i się teraz ukryję
Juan Cortés
Dlaczego nie uwzględniono pw tym? Czy w CJam jest to standardem?
Tim
@Tim CJam zawsze automatycznie drukuje zawartość stosu w programie.
Martin Ender
2
@Tim: Pytanie mówi o zwróceniu 1 lub -1, więc założyłem, że pozostawienie liczby na stosie byłoby w porządku. Zredagowałem link bezpośredni, aby pokazać, że pnie jest potrzebny.
Dennis
17

C, 18 bajtów

Całkiem proste, ale zróbmy to dla zabawy ...

puts("-1"+*i/8%2);

Biorąc pod uwagę ciąg, char *iktóry wypisuje 1 dla headsi -1 dla tails, z końcowym znakiem nowej linii.

Wyjaśnienie

W C "-1" + 1wskazuje 1 znak do przodu, więc jest taki sam jak "1". Rzućmy okiem na pierwsze postacie:

"heads"[0] = 'h' = 104 = 0b01101000
"tails"[0] = 't' = 116 = 0b01110100

Jeśli policzymy bity od skrajnie prawej strony zaczynającej się od zera, bit 3 ma wartość 1 w, headsa 0 w tails: zsumowanie "-1"daje odpowiedni łańcuch. To wygląda tak:

"-1" + ((i[0] >> 3) & 1)

Teraz substytut i[0]z *ia prawy shift z power-of-two podziału zaoszczędzić kilka bajtów. Usuń także bezużyteczne nawiasy:

"-1" + (*i / 8 & 1)

Teraz & 1można go zastąpić % 2. Liczba znaków jest taka sama, ale moduł ma wyższy priorytet, pozwalając na upuszczenie nawiasów. Usuń białe znaki:

"-1"+*i/8%2

Premia

Myślę, że najkrótszym sposobem na uzyskanie liczby całkowitej 1 lub -1 (nie ciągu) w C jest:

18-*i/6

Wyjaśnienie:

'h' = 104
't' = 116

('h' + 't') / 2 = 110
110 - 'h' =  6
110 - 't' = -6

(110 - 'h') / 6 =  1
(110 - 't') / 6 = -1

Apply distributive property (integer division):
18 - 'h' / 6 =  1
18 - 't' / 6 = -1
Andrea Biondo
źródło
1
Pięknie, uwielbiam
Juan Cortés
11

Rubinowy, 8 (6 bez wyjścia)

p ?t<=>i

Operator rakiet!

histocrat
źródło
Wyraźnie właściwe narzędzie do pracy.
primo
9

PHP - 11 bajtów

<?=1-$i^=F;

Działa to, ponieważ 'tails' ^ 'F''2'i 'heads' ^ 'F''.', które są wpisane jako liczba całkowita 0.

Możesz przetestować to rozwiązanie (lub dowolne z poniższych) w następujący sposób:

<?php foreach(['heads', 'tails'] as $i): ?>
 <?=1-$i^=F;
endforeach; ?>

Ideone Link


Alternatywy

15 : <?=1-md5($i)%3;
16 : <?=md5($i)[5]-5;
16 :<?=-crc32($i)%5;

primo
źródło
W krótkiej wersji zawsze dostaję 1, chcesz wyjaśnić, co robi z XOR?
Juan Cortés
@ JuanCortés Dodałem wyjaśnienie i link do Ideone.
primo
2
Teraz to nieszablonowe myślenie!
Dennis
6

TI-BASIC, 9-10 bajtów

cos(πʳinString(Ans,"t

Bezpośredni. „t” znajduje się w pozycji 1 „ogonów”, ale „t” nie znajduje się w ciągu „głów”, więc inString (zwraca 1 dla ogonów i 0 dla głów.

Jeśli twój kalkulator jest w trybie radian (jak powinien być każdy matematyk), zajmuje tylko dziewięć bajtów:

cos(πinString(Ans,"t

Zauważ, że kalkulatory TI nie mają nazwanych ciągów, więc dane wejściowe znajdują się w zmiennej odpowiedzi kalkulatora. Zauważ też, że małe litery mają po dwa bajty, więc to rozwiązanie faktycznie zajmuje mniej pamięci niż słowo „heads”.

lirtosiast
źródło
To jest niesamowite. Twój licznik bajtów jest jednak wyłączony - cos (, π i symbol radian są jednym bajtem, więc w rzeczywistości jest to 8-9 bajtów.
MI Wright
1
tI inString(mają po dwa bajty.
lirtosiast
Och, zapomniałem, że małe litery to dwa bajty. Nieważne więc.
MI Wright
5

Rozszczepienie , 26 21 bajtów

O/';'1
"S@]_"-
R? <tL

Martin (i jego doskonała odpowiedź tutaj ) przekonał mnie do nauki nowego języka, a jakie jest lepsze miejsce niż szybki golf? To prawie na pewno nie jest optymalne, ale hej, było fajnie! Gdy poczuję się dobrze, mogę podać jakieś wyjaśnienie, jeśli będzie wymagane.

BrainSteel
źródło
4

Python 2, 16 bajtów

print(i<'t')*2-1
James Williams
źródło
4

Pyth - 4 bajty


 xz"e

Biegaj z głowami lub ogonami . Jak ijest intw Pyth, używa zjako nazwy zmiennej, która zawiera żadnych danych użytkownika. Jest to odpowiednik Pythona print(z.find("e")), dlatego używa metody @ Dennisa.

matsjoyce
źródło
4

VBA (Excel), 12 bajtów

Nie jest to fantastyczna gra w golfa, ale fajnie jest wypróbować VBA, aby zbliżyć się do odpowiedniego języka programowania ...

?13-asc(i)/6

i jest łańcuchem i wykorzystuje tylko wartość ASCII pierwszego znaku, podzieloną przez 6 i odjętą od 13, aby dać 1 lub -1. Bardzo prosty.

Przykład uruchomienia w bezpośrednim oknie (10 dodatkowych bajtów, aby ustawić zmienną wejściową):

i="Heads":?13-asc(i)/6
 1
Shazback
źródło
4

C, 22 bajty

puts(*i>'h'?"-1":"1");

Podziękowania dla @TheE za powiedzenie mi o tym !

Wyjaśnienie:

Jeśli pierwszy znak ciągu jest większy niż 'h', ciąg "-1"jest drukowany. W przeciwnym razie ciąg "1"zostanie wydrukowany. Zauważ, że to podejście ma końcowy znak nowej linii.


Stara wersja (25 bajtów):

printf("%d",*i>'h'?-1:1);

Wyjaśnienie:

Jeśli pierwszy znak ciągu jest większy niż 'h', drukowane jest -1. W przeciwnym razie drukowane jest 1.

Spikatrix
źródło
właśnie powiedziałem t wcześniej, użyj i jako typu char, rzeczywista definicja przekroczyłaby 1 bajt, taki jak ten zwrot - (- 1) ** i / 16
Abr001am
@ Agawa001, ale zwraca 6 za hi 7 za t.
Spikatrix
och, zapomniałem, muszę użyć mocy: p
Abr001am
Fajny facet, niestety, C nie ma takiej operacji arytmetycznej, więc musisz użyć -1 * pow (-1, * i / 16), co powoduje, że będzie dłużej, z drugiej strony użycie pythona i
matlaba
1
@CoolGuy puts(*i>'h'?"-1":"1");nie byłoby lepsze użycie putów ? (22 bajtów)
euanjt
4

Tr: 17 13 znaków

(Lub 14 10, jeśli policzysz tylko argumenty ...)

tr -s ta-s -1

Przykładowy przebieg:

bash-4.3$ tr -s ta-s -1 <<< heads
1

bash-4.3$ tr -s ta-s -1 <<< tails
-1

Krótkie wyjaśnienie:

tr oznacza transliterację, co oznacza, że ​​zastępuje każdy znak danych wejściowych znalezionych w pierwszym argumencie znakiem w tej samej pozycji w drugim argumencie:

tr ta -1 <<< tails         # replaces t ⇢ -, a → 1
⇒ -1ils

Jeśli pierwszy argument jest dłuższy, znaki bez dopasowania pozycyjnego w drugim argumencie są zastępowane ostatnim znakiem drugiego argumentu:

tr tals -1 <<< tails       # replaces t ⇢ -, a → 1, l → 1, s → 1
⇒ -1i11

Gdy używana jest opcja -s( --squeeze-repeats), kolejne znaki, które zostałyby zastąpione tym samym znakiem, są zastępowane jednocześnie:

tr -s tals -1 <<< tails    # replaces t ⇢ -, a → 1, l+s → 1
⇒ -1i1

Jeśli więc wymienimy wszystkie znaki w „ogonach”, otrzymamy to, czego potrzebujemy:

tr -s tails -1 <<< tails    # replaces t ⇢ -, a+i+l+s → 1
⇒ -1

To samo dotyczy „głów”, ale musimy zachować „t” z przodu, aby zużyć minus (znaki posortowane alfabetycznie pod kątem przerażenia):

tr -s taedhs -1 <<< heads   # replaces h+e+a+d+s → 1
⇒ 1

Scalenie wszystkich unikalnych znaków „ogonów” i „głów” w jednym pierwszym argumencie, trzymając „t” przed sobą, prowadzi do ostatecznego rozwiązania:

tr -s tadehils -1 <<< tails # replaces t → -, a+i+l+s → 1
⇒ -1

tr -s tadehils -1 <<< heads # replaces h+e+a+d+s → 1
⇒ 1

Aby uniknąć wyliczania postaci, w odstępie od - do formatu może być stosowany zamiast.

człowiek w pracy
źródło
Chcesz to wyjaśnić?
Juan Cortés
To zakłada BSD / GNU tr. POSIXly:tr -s ta-s '-[1*]'
sch
4

Zestaw 8088, IBM PC DOS, 17 bajtów

00000000: b402 0826 8200 7a04 b22d cd21 b231 cd21  ...&..z..-.!.1.!
00000010: c3

Niezmontowane:

B4 02           MOV  AH, 02H        ; DOS API display char function     
08 26 0082      OR   DS:[82H], AH   ; set parity flag from input 
7A 04           JPE  HEADS          ; if even, heads - display just '1'
B2 2D           MOV  DL, '-'        ; otherwise first display a '-''
CD 21           INT  21H            ; output DL to console
            HEADS: 
B2 31           MOV  DL, '1'        ; display the '1'
CD 21           INT  21H            ; output DL to console
C3              RET

Wyjaśnienie:

Użyj flagi parzystości procesora, aby ustalić, czy pierwszy znak jest 'h'(parzystą liczbą plików binarnych 1) czy 't'(nieparzystą liczbą plików binarnych 1). Oszczędza to jeden bajt w porównaniu z char w ASCII.

Wejście z wiersza poleceń, wyjście do konsoli.

Wejście wyjście:

wprowadź opis zdjęcia tutaj

640 KB
źródło
4

shell (przenośny / POSIX), 16 bajtów

expr $i : he - 1

Wypróbuj online!
Dzięki @ StéphaneChazelas w unix.stackexchange.com

Wypróbowano inne rozwiązania:
echo $[30#$i%7-1] # 17 bytes but only in bash, zsh. Wypróbuj online!
echo $((30#$i%7-1)) # 19 bytes but only bash,ksh,zsh. Wypróbuj online!
he=2;echo $[${i%a*}-1] # 22 bytes But only in bash,zsh . Wypróbuj online!
a=${i%h*};echo ${a:+-}1 # 23 . przenośny . Wypróbuj online!
he=2;echo $((${i%a*}-1)) # 24 bytes . przenośny . Wypróbuj online!
IFS=h;set $i;echo ${1:+-}1 # 26 (change IFS) . przenośny . Wypróbuj online!
(IFS=h;set $i;echo ${1:+-}1) # 28 (subshell) . przenośny . Wypróbuj online!
(IFS=h;set $i;echo $(($#*2-3))) # 31 bytes . przenośny . Wypróbuj online!

Uwaga: Używanie dashjako rozsądnego porównania przenośnego testera powłoki.

  • expr $i : he - 1Działa poprzez liczenie, ile znaków pasuje hez $i : he. headsMecz 2i tailsmecz 0 (brak) .Następnie odejmując 1z - 1.

  • $[30#$i%7-1]działa poprzez konwersję ciągu na liczbę całkowitą. Podstawa 30 i mod przez 7 zostały wybrane, aby uzyskać różnicę 2 między headsi tails. Następnie odejmując 1, konwertuje liczby na 1i -1.
    Zauważ, że a $[...]to archaiczna forma wyrażenia arytmetycznego $((...))ważna tylko w niektórych powłokach.

  • he=2;echo $[${i%a*}-1]działa poprzez utworzenie zmiennej o określonej wartości, a następnie użycie rozszerzenia arytmetycznego do rozwinięcia tej zmiennej (z wartości tekstowej). W ${i%a*}konwertuje headsdo hei tailsna t(tj, jako zmienna, ma wartość 0).

  • IFS=h;set $i;echo ${1:+-}1działa w dwóch krokach. Ustawianie IFS do hprzerwy notowanych $iw set $ina części podzielonej przez charakter h, headsjest podzielony na ''i 'eads', tym samym ustawienie $1na wartość null. tailnie jest podzielone przez h, co $1równa się tails. Następnie ${1:+-}generuje wartość -if, która $1jest różna od null (jak w in tails) lub nic (jak w null $1). Ten znak (lub nic) jest połączony 1.

  • (IFS=h;set $i;echo $(($#*2-3)))działa w podobny sposób, ale należy użyć liczby części ( $#), na które $iwłamał się łańcuch .

Izaak
źródło
3

Python 2, 17 bajtów

print'-1'['t'>i:]

'heads'jest mniejsze niż 't', więc ocenia True == 1i drukuje ciąg po pierwszym znaku. 'tails'jest większy niż 't', więc ocenia False == 0i cały łańcuch jest drukowany.

Jeśli robimy to z wiersza poleceń, z niejawnym drukowaniem, staje się to po prostu:

'-1'['t'>i:]

... dla 12 bajtów, ale dodaje pojedyncze cudzysłowy do wyniku.

sirpercival
źródło
3

QBasic, 11 bajtów

To musi być najkrótszy kawałek QBasic, jaki kiedykolwiek napisałem.

c=i>"t
?c^c

Wyjaśnienie:

Powyżej jest trochę dość mocno golfa QBasic. Gdy autoformatter przejdzie przez to, będzie wyglądać następująco:

c = i > "t"
PRINT c ^ c

Pierwszy wiersz porównuje ciąg iz "t". Jeśli ijest "heads", i > "t"to fałsz i c = 0. Jeśli ijest "tails", i > "t"to prawda i c = -1. Tak, -1jest domyślną wartością logiczną true w QBasic!

Drugi wiersz odwzorowuje -1się -1i 0aby 1poprzez trick matematyki: (-1)^(-1) == 1/(-1) == -1i 0^0, choć technicznie matematycznie zdefiniowana, powraca 1.

Ten kod wymaga ijawnego zadeklarowania jako zmiennej łańcuchowej; inaczej by tak było i$. Pełny program testowy (testowany na QB64 ):

DIM i AS STRING
DATA heads, tails

FOR x = 1 TO 2
READ i

c=i>"t
?c^c

NEXT x
DLosc
źródło
3

Gaia , 5 4 bajtów

'eI(

Podobnie do odpowiedzi CJam Dennisa , znajduje indeks ew ciągu wejściowym

Zapisano jeden bajt, ponieważ nie zdawałem sobie sprawy, że dane wejściowe są automatycznie używane jako argument, jeśli nie ma wystarczającej liczby wartości stosu

Jak to działa

'e  Push e
I   Index of e in the the input. 2 if heads, 0 if tails
(   Subtract One
Stack gets automatically outputted

Wypróbuj online!

EdgyNerd
źródło
3

Bash , 22

echo $[0x${1:1:1}/2-6]

Bierze drugą literę ( elub a) i interpretuje ją jako cyfrę szesnastkową (14 lub 10), a następnie podziel przez 2 i odejmij 6, aby uzyskać prawidłowe odpowiedzi.

Wypróbuj online!

Cyfrowa trauma
źródło
Niesamowita sztuczka, pożyczę ją :)
roblogic
1
Do bash użyj: echo $[30#$i%7-1]tylko 17 bajtów. :-)
Isaac
3

ed , 27 25 21 bajtów

edsprawił mi ból głowy. W końcu to rozgryzłem z pomocą @ed1confTwittera i kilku podglądaczy unix.se. Nie możesz tak po prostu dopasować rzeczy s/re/newtext/, musisz ją poprzedzić, w gprzeciwnym razie edspakujesz smutek. To jest jak zrzędliwy 50-letni program uniksowy mówiący „zejdź z mojego trawnika”.

g/t/s//-
,s/\w\+/1
w

Wypróbuj online!

-2 bajty przez upuszczenie ostatnich /s
-4 bajtów dzięki @manatwork (i którego sedodpowiedź plagiatowałem)
Stara wersja:
g/t/s//- g/\w\+/s//1 wq .

roblogic
źródło
1
Ale potrzebujesz sztuczki adresu tylko dla pierwszego polecenia, ponieważ drugie nigdy nie zawiedzie. I nie trzeba tego wyraźnie q, sam zrezygnuje, gdy nie pozostanie nic do zrobienia. I potrzebujesz tylko nowej linii po nich, „.” (Lub „roblogic”…) jest niepotrzebne. Wypróbuj online!
manatwork
Achh dziękuję Spróbuję twoich sugestii, kiedy wrócę do domu. W pubie teraz 👍🏼
roblogic
2

Python, 20 bajtów

print(('h'in i)*2-1)

Zwraca, Falsejeśli tak nie jest, a Truejeśli tak jest. W Pythonie Falsei 0są takie same, Truei 1są również.

Więc:

True (1) * 2 -1 = 2-1 = 1
False (0) * 2 - 1 = 0-1 = -1
Tim
źródło
2

golflua 25 20 18

w(I.r():f'h'&1|-1)

Prawdopodobnie można by trochę zagrać w golfa za pomocą trików, o których obecnie nie myślę. (zobacz historię dla starej wersji) Zapisano 5 znaków, przenosząc dane wejściowe writei ignorując iftam zawartą instrukcję. Dwa kolejne znaki zostały zapisane, ignorując opcjonalny nawias włączony find. Nie sprawdza warunków nieudanych (tj. Danych wejściowych, które nie są główkami ani ogonami ).

Byłby to odpowiednik Lua

io.write(io.read():find('h') and 1 or -1)
Kyle Kanos
źródło
2

Haskell, 18 bajtów

f('h':_)=1
f _= -1

Każdy ciąg rozpoczynający się na literę hjest odwzorowany 1, a wszystkie inne na -1.

nimi
źródło
2

Sed: 16 znaków

s/t/-/
s/\w\+/1/

Przykładowy przebieg:

bash-4.3$ sed 's/t/-/;s/\w\+/1/' <<< 'heads'
1

bash-4.3$ sed 's/t/-/;s/\w\+/1/' <<< 'tails'
-1
człowiek w pracy
źródło
Fajnie, użyłem twojego wyrażenia regularnego dla mojego edrozwiązania, ale nadal zajęło 23 bajty, ponieważ edjest stary i zrzędliwy!
roblogic
\wi \+są jednak rozszerzeniami GNU.
sch
2

dc , 8 bajtów

?z2*1r-p

dc nie może zrobić nic znaczącego z ciągami innymi niż wczytać je i spróbować je ocenić. Robiąc to, „heads” generuje ostrzeżenia o niezaimplementowanych poleceniach i pustym stosie, które ignorujemy, ale co ważne, stos pozostaje pusty. „ogony” robią prawie to samo z ważnym wyjątkiem, że końcowe „ls” ładuje wartość z rejestru s do stosu.

Następnie używamy „z”, aby uzyskać długość stosu i arytmetycznie bawimy się, aby uzyskać prawidłowe odpowiedzi.

Wypróbuj online!

Cyfrowa trauma
źródło
2

Trójkątny , 10 bajtów

F.~%.7/-_<

Wypróbuj online!

Dzieli wartość ASCII wprowadzonego znaku przez 7. Odejmuje iloraz od 15. Wykonywanie zatrzymuje się, gdy kończy się adres IP przestrzeni programowej. Działa to, ponieważ Trójkątny może zarządzać tylko podziałem całkowitym. Dogodnie „h” ma wartość 104, która wynosi 14, gdy liczba całkowita jest dzielona przez 7; „t” wynosi 116, co oznacza 16, gdy liczba całkowita jest dzielona przez 7.

Niegolfowane / Objaśnienie:

   F
  . ~
 % . 7
/ - _ <
---------------------------------------------------------------
F                 - Push 15 to Top of Stack
 ~                - Read a character from input, push its value to ToS
   7              - Push 7 to ToS
     <_           - Change directions, then pop ToS-1 and ToS, push their integer quotient
        -         - Pop ToS-1 and ToS, push their difference
          %       - Print ToS as an integer

Poprzednia wersja (14 bajtów):

~\81|m/,!<.>i%

Przeczytaj znak z wejścia; jeśli wartość ASCII tego znaku podzielona przez 8 ma resztę, wydrukuj -1, w przeciwnym razie wydrukuj 1.

Przywróć Monikę
źródło
2

Beczka ,8 12 8 bajtów

_d=2*1-.

Wypróbuj online!

Wyjaśnienie (niepoprawnie składniowe)

_        Take input and discard the last item
 d=      If the top of the stack is d:
   2*    Re-set the top of the stack as 2
     1-  Decrement the top of the stack by 1
       . Explicitly output the top of the stack

-4 bajty dzięki manatwork

ZA
źródło
Czy może być jakaś różnica wersji interpretera TIO? Wygląda na to, że nie obsługuje ani „głów”, ani „ogonów”.
manatwork
Teraz naprawiłem program.
Czy może być jakaś różnica wersji interpretera TIO? Wydaje się, że pobiera dane niejawnie i odwraca je przy każdej próbie przetwarzania nieistniejących danych, dzięki czemu działa bez nich ^.
manatwork
BTW, nie musisz odrzucać 4 znaków, dopóki „t” nie będzie oznaczać, że drugi znak „d” lub „l” określa, które wejście otrzymałeś. Wystarczy jawnie wyprowadzić dane, aby pozostawić nieprzetworzone dane wejściowe na stosie: Wypróbuj online! .
manatwork
Myślę, że nadal mogę -1 bajtów, przełączając się na „Reg”: TIO!
1

Vitsy , 13 bajtów

Spóźniam się na przyjęcie. ¯ \ _ (ツ) _ / ¯

zv&v'h'=)i1rN
z             Grab all input.
 v            Capture the top item (h or t) as a temp variable.
  &           Generate new stack, move to it.
   v'h'=      Test if the variable is h.
        )i    If it isn't, push -1.
          1   Push 1.
           r  Reverse the stack.
            N Print out the top item as a number.
Addison Crump
źródło