CodeGolf - Kopf oder Zahl

26

Anleitung

In Anbetracht eine unbekannte Eingabezeichenfolge imit einem Wert von entweder Kopf oder Schwanz , kehrt 1für Köpfe oder -1für Schwanz mit dem kürzesten Code.

Beispiel nicht Golf Code (55b):

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

Beispiel Golf Code (16b):

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


Für das Beispiel wurde Javascript verwendet, dies ist jedoch keine Voraussetzung . Entschuldigung, wenn es für die meisten Benutzer zu einfach ist, kann es verbessert werden.

Juan Cortés
quelle
14
Willkommen bei PPCG! Dies ist zu einfach, um eine interessante Herausforderung zu sein. In Zukunft sollten Sie in Betracht ziehen, Herausforderungen in die Sandbox zu stellen , wo sie Feedback erhalten, bevor Sie sie live veröffentlichen.
Alex A.
1
6 Antworten, keine schlechte Herausforderung. Versuchen Sie es erneut
edc65
4
Bei 4 positiven und 5 negativen Stimmen war Ihre Frage nicht wirklich unbeliebt. Es hat gerade gemischte Kritiken bekommen. Die vorliegende Aufgabe ist zwar ein wenig grundlegend, sie ist jedoch klar definiert und hat bisher 7 Antworten mit verschiedenen Ansätzen geliefert. Nicht schlecht für einen ersten Versuch.
Dennis
7
Ich bin gerade so verwirrt, gestern -4, jetzt +4, das ist sicher kein Stapelüberlauf: P
Juan Cortés
10
Ich habe lange auf eine kurze Herausforderung wie diese gewartet, die meisten Herausforderungen sind zu lang und kompliziert für einen Anfänger wie mich.
Sean Latham

Antworten:

11

CJam, 4 Bytes

I'e#

Angenommen, die Variable Ienthält die Eingabe, da iin CJam kein gültiger Bezeichner vorhanden ist.

Probieren Sie es online aus.

Dies entspricht dem JavaScript-Code I.indexOf('e').

Dennis
quelle
Wahrscheinlich unschlagbar für diese Herausforderung.
Alex A.
1
Entschuldigung, ich habe die Anforderungen nicht genug verstanden und mich mit dieser Frage lächerlich gemacht. Ich gehe zurück und verstecke mich jetzt
Juan Cortés
Warum nehmen Sie das nicht mit pauf? Gehört es in CJam nicht zum Standard?
Tim
@Tim CJam druckt den Stapelinhalt immer automatisch aus.
Martin Ender
2
@Tim: Die Frage besagt, dass 1 oder -1 zurückgegeben werden soll. Ich bin also davon ausgegangen, dass es in Ordnung wäre, die Zahl auf dem Stapel zu belassen. Ich habe den Permalink bearbeitet, um zu zeigen, dass er pnicht benötigt wird.
Dennis
17

C 18 Bytes

Ziemlich einfach, aber lass es uns nur zum Spaß machen ...

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

Wenn die Zeichenfolge angegeben char *iwird, werden 1 für headsund -1 für tailsmit nachfolgendem Zeilenumbruch ausgegeben.

Erläuterung

Zeigt in C "-1" + 1auf 1 Zeichen vorwärts, ist also dasselbe wie "1". Werfen wir einen Blick auf die ersten Zeichen:

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

Wenn wir die Bits vom rechten Ende beginnend bei Null zählen, ist Bit 3 1 in headsund 0 in tails: Summieren, um "-1"die richtige Zeichenfolge zu ergeben. Es sieht aus wie das:

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

Ersetzen Sie nun i[0]mit *iund die rechte Verschiebung durch die Division mit Zweierpotenz, um einige Bytes zu sparen. Entfernen Sie auch unnötige Klammern:

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

Nun & 1kann substituiert sein mit % 2. Die Anzahl der Zeichen ist gleich, der Modul hat jedoch eine höhere Priorität, sodass die Klammern weggelassen werden können. Leerzeichen entfernen:

"-1"+*i/8%2

Bonus

Ich denke, der kürzeste Weg, um eine Ganzzahl 1 oder -1 (keine Zeichenfolge) in C zu erhalten, ist:

18-*i/6

Erläuterung:

'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
quelle
1
Schön, liebe es
Juan Cortés
11

Ruby, 8 (6 ohne Ausgabe)

p ?t<=>i

Rocketship-Betreiber!

Histokrat
quelle
Klar das richtige Werkzeug für den Job.
Primo
9

PHP - 11 Bytes

<?=1-$i^=F;

Dies funktioniert, weil 'tails' ^ 'F''2'und 'heads' ^ 'F''.', die bei der Eingabe als Ganzzahl sind 0.

Sie können diese Lösung (oder eine der folgenden) folgendermaßen testen:

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

Ideone Link


Alternativen

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

primo
quelle
Bei der Kurzversion bekomme ich immer eine 1. Möchten Sie erklären, was es mit dem XOR macht?
Juan Cortés
@ JuanCortés Ich habe eine Erklärung und einen Link zu Ideone hinzugefügt.
Primo
2
Jetzt denkt das über den Tellerrand!
Dennis
6

TI-BASIC, 9-10 Bytes

cos(πʳinString(Ans,"t

Einfach. "t" befindet sich in Position 1 von "tails", "t" jedoch nicht in der Zeichenfolge "heads", also inString (gibt 1 für tails und 0 für heads zurück.

Wenn sich Ihr Rechner im Bogenmaßmodus befindet (wie es jeder Mathematiker tun sollte), sind nur neun Bytes erforderlich:

cos(πinString(Ans,"t

Beachten Sie, dass TI-Taschenrechner keine benannten Zeichenfolgen haben, sodass die Eingabe in der Antwortvariablen des Taschenrechners erfolgt. Beachten Sie auch, dass Kleinbuchstaben jeweils zwei Bytes umfassen, sodass diese Lösung tatsächlich weniger Speicher benötigt als das Wort "Köpfe".

Lirtosiast
quelle
Das ist fantastisch. Ihre Byteanzahl ist jedoch ausgeschaltet - cos (, π und das Radiansymbol sind alle ein Byte, also sind es tatsächlich 8-9 Byte.
MI Wright
1
Das tund inString(sind jeweils zwei Bytes.
Lirtosiast
Oh, ich hatte vergessen, dass Kleinbuchstaben zwei Bytes lang sind. Egal Dann.
MI Wright
5

Spaltung , 26 21 Bytes

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

Martin (und seine ausgezeichnete Antwort hier ) überzeugte mich, eine neue Sprache zu lernen, und welchen besseren Ort als ein schnelles Golfspiel? Das ist mit ziemlicher Sicherheit nicht optimal, aber hey, es hat Spaß gemacht! Sobald ich mich gut dabei fühle, kann ich eine Erklärung abgeben, wenn ich darum gebeten werde.

BrainSteel
quelle
4

Python 2, 16 Bytes

print(i<'t')*2-1
James Williams
quelle
4

Pyth - 4 Bytes


 xz"e

Laufen Sie mit Kopf oder Schwanz . Wie iist intin Pyth, Diese verwendet zals Variablennamen, die jeder Benutzereingabe enthält. Es entspricht dem Python print(z.find("e")), verwendet also die @ Dennis-Methode.

Matsjoyce
quelle
4

VBA (Excel), 12 Byte

Kein fantastisches Stück Golf, aber es macht Spaß, mit VBA zu versuchen, einer richtigen Programmiersprache nahe zu kommen ...

?13-asc(i)/6

i ist die Zeichenfolge, die nur den ASCII-Wert des ersten Zeichens ausnutzt, durch 6 geteilt und von 13 subtrahiert, um 1 oder -1 zu ergeben. Sehr einfach.

Beispiel im unmittelbaren Fenster ausführen (10 zusätzliche Bytes, um die Eingabevariable festzulegen):

i="Heads":?13-asc(i)/6
 1
Shazback
quelle
4

C, 22 Bytes

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

Credits gehen an @TheE, um mir davon zu erzählen !

Erläuterung:

Wenn das erste Zeichen der Zeichenfolge größer als ist 'h', wird die Zeichenfolge "-1"gedruckt. Andernfalls wird die Zeichenfolge "1"gedruckt. Beachten Sie, dass dieser Ansatz mit einem nachgestellten Zeilenumbruchzeichen einhergeht.


Alte Version (25 Bytes):

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

Erläuterung:

Ist das erste Zeichen der Zeichenfolge größer als 'h', wird -1 ausgegeben. Andernfalls wird 1 gedruckt.

Spikatrix
quelle
Ich habe gerade gesagt, t vor, verwenden Sie i als Typ char, die tatsächliche Definition würde um 1 Byte überschreiten, wie diese Rückgabe - (- 1) ** i / 16
Abr001am
@ Agawa001, aber das ergibt 6 für hund 7 für t.
Spikatrix
Oh, ich habe vergessen, ich muss Strom
verbrauchen
Cool guy leider C tut solche arithmetische Operation haben so u haben verwenden -1 * pow (-1, * i / 16) , die es waaay länger macht, in anderen, Python und Matlab Nutzung ** und ^
Abr001am
1
@CoolGuy wäre die Verwendung von Puts puts(*i>'h'?"-1":"1");nicht besser? (22 bytes)
euanjt
4

Tr: 17 13 Zeichen

(Oder 14 10, wenn Sie nur die Argumente zählen ...)

tr -s ta-s -1

Probelauf:

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

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

Kurze Erklärung:

tr steht für transliterate, dh ersetzt jedes Zeichen der im ersten Argument gefundenen Eingabe durch ein Zeichen an derselben Stelle im zweiten Argument:

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

Wenn das erste Argument länger ist, werden die Zeichen ohne Positionsübereinstimmung im zweiten Argument durch das letzte Zeichen des zweiten Arguments ersetzt:

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

Wenn die Option -s( --squeeze-repeats) verwendet wird, werden aufeinanderfolgende Zeichen, die durch dasselbe Zeichen ersetzt würden, sofort ersetzt:

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

Wenn wir also alle Zeichen in "Tails" auflisten, erhalten wir das, was wir brauchen:

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

Das Gleiche gilt für "Köpfe", aber wir müssen das "t" voranstellen, um das Minus zu verbrauchen (Buchstaben alphabetisch sortiert nach Gruseligkeit):

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

Das Zusammenführen aller eindeutigen Zeichen von "Tails" und "Heads" in einem einzigen ersten Argument, wobei "T" im Vordergrund bleibt, führt zur endgültigen Lösung:

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

Um die Aufzählung der Zeichen zu vermeiden, kann stattdessen ein Intervall im Format von - bis verwendet werden.

Mann bei der Arbeit
quelle
Möchtest du es erklären?
Juan Cortés
Das setzt BSD / GNU voraus tr. POSIXly:tr -s ta-s '-[1*]'
sch
4

8088-Assembly, IBM PC DOS, 17 Byte

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

Zerlegt:

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

Erläuterung:

Verwenden Sie das Paritätsflag der CPU, um zu bestimmen, ob das erste Zeichen eine 'h'(gerade Anzahl von Binären 1) oder eine 't'(ungerade Anzahl von Binären 1) ist. Dies spart ein Byte gegenüber dem Vergleich des Zeichens in ASCII.

Eingabe über die Befehlszeile, Ausgabe an die Konsole.

Input-Output:

Bildbeschreibung hier eingeben

640 KB
quelle
4

Shell (portabel / POSIX), 16 Byte

expr $i : he - 1

Probieren Sie es online!
Vielen Dank an @ StéphaneChazelas in unix.stackexchange.com

Andere Lösungen ausprobiert:
echo $[30#$i%7-1] # 17 bytes but only in bash, zsh. Probieren Sie es online!
echo $((30#$i%7-1)) # 19 bytes but only bash,ksh,zsh. Probieren Sie es online!
he=2;echo $[${i%a*}-1] # 22 bytes But only in bash,zsh . Probieren Sie es online!
a=${i%h*};echo ${a:+-}1 # 23 . tragbar . Probieren Sie es online!
he=2;echo $((${i%a*}-1)) # 24 bytes . tragbar . Probieren Sie es online!
IFS=h;set $i;echo ${1:+-}1 # 26 (change IFS) . tragbar . Probieren Sie es online!
(IFS=h;set $i;echo ${1:+-}1) # 28 (subshell) . tragbar . Probieren Sie es online!
(IFS=h;set $i;echo $(($#*2-3))) # 31 bytes . tragbar . Probieren Sie es online!

Hinweis: Verwendung dashals sinnvoller Vergleich eines tragbaren Shell-Testers.

  • expr $i : he - 1 Zählt, wie viele Zeichen übereinstimmen he mit $i : he. Eine headsÜbereinstimmung 2und eine tailsÜbereinstimmung 0 (keine). Dann subtrahieren 1mit - 1.

  • $[30#$i%7-1]Konvertiert den String in eine Ganzzahl. Die Basis 30 und der Mod von 7 wurden ausgewählt, um eine Differenz von 2 zwischen headsund zu erhaltentails . Durch Subtrahieren von 1 werden die Zahlen in 1und umgewandelt -1.
    Beachten Sie, dass a $[...]eine archaische Form des arithmetischen Ausdrucks ist, $((...))die nur in einigen Shells gültig ist.

  • he=2;echo $[${i%a*}-1]Dies funktioniert, indem eine Variable mit einem bestimmten Wert erstellt und anschließend mit der arithmetischen Erweiterung diese Variable (ausgehend vom Textwert) erweitert wird. Das${i%a*} Konvertierung headsnach heund tailsnach t(die als Variable den Wert 0 hat).

  • IFS=h;set $i;echo ${1:+-}1Arbeitet in zwei Schritten. Wenn Sie IFS so einstellen , dass hdas Anführungszeichen $iin set $idurch das Zeichen getrennte Teile geteilt wird h, headswird es in ''und geteilt und 'eads'somit $1auf null gesetzt. tailwird nicht durch geteilt h, macht also $1gleich tails. Dann,${1:+-} erzeugt ein , -wenn der Wert $1nicht null ist (wie in tails) oder nichts (wie bei einem Null $1). Dieses Zeichen (oder nichts) ist verkettet mit 1.

  • (IFS=h;set $i;echo $(($#*2-3)))funktioniert auf ähnliche Weise, aber verwenden Sie die Anzahl der Teile ( $#), in denen die Zeichenfolge enthalten ist$i gerissen wurde.

Isaac
quelle
3

Python 2, 17 Bytes

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

'heads'ist kleiner als 't', also wertet es ausTrue == 1 und die Zeichenfolge nach dem ersten Zeichen gedruckt. 'tails'ist größer als 't', wird also ausgewertet False == 0und die gesamte Zeichenfolge gedruckt.

Wenn wir dies über die Befehlszeile mit implizitem Drucken tun, wird es einfach zu:

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

... für 12 Bytes, fügt der Ausgabe jedoch einfache Anführungszeichen hinzu.

sirpercival
quelle
3

QBasic, 11 Bytes

Dies muss das kürzeste Stück von QBasic sein, das ich je geschrieben habe.

c=i>"t
?c^c

Erläuterung:

Das obige ist ein ziemlich stark golfener QBasic. Sobald der Autoformatierer damit fertig ist, sieht es so aus:

c = i > "t"
PRINT c ^ c

Die erste Zeile vergleicht den String imit "t". Wenn iist "heads", i > "t"ist falsch und c = 0. Wenn iist "tails", i > "t"ist wahr und c = -1. Ja,-1 in QBasic ist der Standardwert für boolean true!

Die zweite Zeile abbildet -1auf -1und 0zu 1über einen mathematischen Trick: (-1)^(-1) == 1/(-1) == -1und 0^0, wenn auch technisch mathematisch nicht definiert, kehrt 1.

Für diesen Code muss iexplizit eine Zeichenfolgenvariable deklariert werden. sonst müsste es sein i$. Vollständiges Testprogramm (getestet auf QB64 ):

DIM i AS STRING
DATA heads, tails

FOR x = 1 TO 2
READ i

c=i>"t
?c^c

NEXT x
DLosc
quelle
3

Gaia , 5 4 Bytes

'eI(

Findet ähnlich wie Dennis 'CJam-Antwort den Index von ein der Eingabezeichenfolge

1 Byte gespeichert, da ich nicht erkannte, dass die Eingabe automatisch als Argument verwendet wurde, wenn nicht genügend Stapelwerte vorhanden sind

Wie es funktioniert

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

Probieren Sie es online!

EdgyNerd
quelle
3

Bash , 22

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

Nimmt den 2. Buchstaben ( eoder a) und interpretiert ihn als Hexadezimalziffer (14 oder 10), dividiert dann durch 2 und subtrahiert 6, um die richtigen Antworten zu erhalten.

Probieren Sie es online!

Digitales Trauma
quelle
Toller Trick, ich werde ihn ausleihen :)
Roblogic
1
Verwenden Sie für Bash: echo $[30#$i%7-1]nur 17 Byte. :-)
Isaac
3

ed , 27 25 21 bytes

edgab mir Kopfschmerzen. Endlich habe ich es mit Hilfe von @ed1confTwitter und einigen Guckern herausgefunden unix.se. Man kann nicht einfach Dinge mit s/re/newtext/abgleichen, man muss es mit voranstellen, gsonst edpackt man ein trauriges. Es ist wie ein mürrisches 50 Jahre altes Unix-Programm, das sagt "Komm von meinem Rasen runter".

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

Probieren Sie es online!

-2 Bytes durch /Löschen der letzten s
-4 Bytes dank @manatwork (& dessen sedAntwort ich plagiiert habe)
Alte Version:
g/t/s//- g/\w\+/s//1 wq .

roblogic
quelle
1
Sie benötigen den Adressentrick jedoch nur für den ersten Befehl, da der zweite niemals fehlschlägt. Und es ist nicht explizit erforderlich q, es wird von selbst beendet, wenn nichts mehr zu tun ist. Und Sie brauchen nur einen Zeilenumbruch nach ihnen, das "." (Oder "Roblogic" ...) ist unnötig. Probieren Sie es online!
Manatwork
Ahh danke, ich werde Ihre Vorschläge versuchen, wenn ich nach Hause komme. In der Kneipe jetzt 👍🏼
Roblogic
2

Python, 20 Bytes

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

Dies wird zurückgegeben, Falsewenn dies nicht der Fall ist und Truewenn dies der Fall ist. In Python Falseund 0sind gleich, und Trueund 1auch.

So:

True (1) * 2 -1 = 2-1 = 1
False (0) * 2 - 1 = 0-1 = -1
Tim
quelle
2

Golflua 25 20 18

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

Vielleicht könnte man noch mehr Golf spielen, wenn man einige Tricks benutzt, über die ich im Moment nicht nachdenke. (siehe Verlauf für alte Version) 5 Zeichen wurden gespeichert, indem die Eingabe in writedie ifAnweisung verschoben und dort ignoriert wurde . Zwei weitere Zeichen wurden gespeichert, indem die optionale Klammer an ignoriert wurde find. Es wird nicht nach fehlgeschlagenen Bedingungen gesucht (dh Eingaben, die weder Kopf noch Zahl sind) ).

Ein Lua-Äquivalent wäre

io.write(io.read():find('h') and 1 or -1)
Kyle Kanos
quelle
2

Haskell, 18 Bytes

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

Jede Zeichenfolge, die mit dem Buchstaben beginnt, hwird zugeordnet 1, alle anderen bis -1.

nimi
quelle
2

Sed: 16 Zeichen

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

Probelauf:

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

bash-4.3$ sed 's/t/-/;s/\w\+/1/' <<< 'tails'
-1
Mann bei der Arbeit
quelle
Schön, ich habe deinen regulären Ausdruck für meine edLösung verwendet, aber es hat immer noch 23 Bytes gedauert, weil er edalt und mürrisch ist!
Roblogic
\wund \+sind allerdings GNU-Erweiterungen.
sch
2

Gleichstrom , 8 Bytes

?z2*1r-p

dc kann mit Strings nichts Sinnvolles anfangen, als sie einzulesen und zu versuchen, sie auszuwerten. Dabei gibt "heads" einige Warnungen über nicht implementierte Befehle und leeren Stack aus, die wir ignorieren. Wichtig ist jedoch, dass der Stack leer bleibt. "tails" macht fast dasselbe mit der wichtigen Ausnahme, dass das letzte "ls" einen Wert aus dem s-Register in den Stack lädt.

Wir verwenden dann "z", um die Stapellänge zu erhalten, und tüfteln arithmetisch, um die richtigen Antworten zu erhalten.

Probieren Sie es online!

Digitales Trauma
quelle
2

Dreieckig , 10 Bytes

F.~%.7/-_<

Probieren Sie es online!

Dividiert den ASCII-Wert eines eingegebenen Zeichens durch 7. Subtrahiert den Quotienten von 15. Die Ausführung wird angehalten, wenn die IP nicht mehr über den Programmbereich verfügt. Dies funktioniert, weil Triangular nur Ganzzahldivisionen verwalten kann. Praktischerweise hat "h" einen Wert von 104, was 14 ist, wenn die ganze Zahl durch 7 geteilt wird; "t" ist 116, was 16 ist, wenn die ganze Zahl durch 7 geteilt wird.

Ungolfed / Erklärung:

   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

Vorherige Version (14 Bytes):

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

Liest ein Zeichen aus der Eingabe; Wenn der durch 8 geteilte ASCII-Wert dieses Zeichens einen Rest enthält, geben Sie -1 aus, andernfalls geben Sie 1 aus.

Setzen Sie Monica wieder ein
quelle
2

Fass ,8 12 8 Bytes

_d=2*1-.

Probieren Sie es online!

Erklärung (syntaktisch ungültig)

_        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 Bytes dank Handarbeit

EIN
quelle
Kann es einen Versionsunterschied zwischen TIO-Interpreter geben? Sieht so aus, als würde es weder mit "Köpfen" noch mit "Schwänzen" umgehen.
Manatwork
Jetzt habe ich das Programm repariert.
A
Kann es einen Versionsunterschied zwischen TIO-Interpreter geben? Es scheint, dass Eingaben implizit erforderlich sind und bei jedem Versuch, nicht vorhandene Daten zu verarbeiten, rückgängig gemacht werden ^.
Manatwork
Übrigens müssen Sie nicht 4 Zeichen verwerfen, bis "t" als das zweite "d" oder "l" bereits identifiziert, welche Eingabe Sie erhalten haben. Muss nur explizit ausgeben, damit die unverarbeitete Eingabe auf dem Stapel verbleibt: Probieren Sie es online aus! .
Manatwork
Ich glaube ich kann noch -1 Bytes durch Umschalten auf "Reg": TIO!
A
1

Vitsy , 13 Bytes

Also, ich bin zu spät für die Party. ¯ \ _ (ツ) _ / ¯

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
quelle