Aufgabe
Bei einer nicht negativen Ganzzahl n
geben Sie 1
if n
is 0
und den Wert n
else aus.
Eingang
Eine nicht negative ganze Zahl.
- Wenn Sie den String als Eingabe akzeptieren möchten, würde der String dem folgenden regulären Ausdruck entsprechen:
/^(0|[1-9][0-9]*)$/
dh er darf keine führenden Nullen haben, außer wenn dies der Fall ist0
. - Wenn Sie eine reelle Ganzzahl als Eingabe akzeptieren, können Sie davon ausgehen, dass sich die Ganzzahl innerhalb der Verarbeitungskapazität der Sprache befindet.
Ausgabe
Eine positive ganze Zahl, wie oben angegeben. Führende Nullen sind nicht erlaubt. Ihre Ausgabe sollte dem regulären Ausdruck entsprechen /^[1-9][0-9]*$/
.
Testfälle
input output
0 1
1 1
2 2
3 3
4 4
5 5
6 6
7 7
Wertung
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Es gelten Standardlücken .
Antworten:
C (gcc),
1413 BytesVielen Dank an @betseg, der mich an den
n?:1
Trick in den Kommentaren der anderen C-Antwort erinnert hat!Probieren Sie es online!
C 17 Bytes
Probieren Sie es online!
C, 16 Bytes
Probieren Sie es online!
quelle
3*!n+n
gleich an3*0+5
.main
von der aus die Funktion / das Makrof
aufgerufen wird. Eine Lösung muss nicht standardmäßig ein vollständiges Programm sein. Die gcc-spezifische Version wird möglicherweise auf einem anderen Compiler kompiliert oder nicht, und sie wird möglicherweise nicht ordnungsgemäß ausgeführt, wenn sie auf einem anderen Compiler kompiliert wird.Japt , 2 Bytes
Probieren Sie es online!
Erläuterung
ª
ist eine Abkürzung für den JS-||
Operator. Japt hat implizite Eingaben, daher berechnet dieses Programminput||1
und das Ergebnis wird implizit an STDOUT gesendet.w1
würde auch funktionieren, das Maximum der Eingabe und1
.quelle
Alice , 7 Bytes
Probieren Sie es online!
Erläuterung
quelle
JavaScript (ES6), 7 Byte
quelle
n=>n+!n
(Zumindest denke ich)n|!n
, obwohl dies auf eine 31-Bit-Menge beschränkt ist.)n=>n||1
vereinfachen könnten||1
, dann nein. Akzeptable Antworten sind entweder vollständige Programme oder Funktionen.n=>do_something_with(n)
ist eine Pfeilfunktion in der ES6-Syntax.n
wenn er nicht Null ist. Ein bitweises ODER ändert sich,n
wenn das niedrigstwertige Bit nicht gesetzt ist (z(4|1) === 5
. B. ).Pyth, 2 Bytes
Probieren Sie es online aus
Erläuterung
quelle
Retina , 4 Bytes
Probieren Sie es online!
Wenn die Eingabe mit einer Null beginnt, ersetzen Sie diese durch eine 1. (Funktioniert, da die Eingabe für Werte ungleich Null garantiert keine führenden Nullen enthält.)
quelle
V , 4 Bytes
Probieren Sie es online!
Missbrauch eines nicht bevorzugten, aber erwarteten Verhaltens , daher kann ich es nicht wirklich als Fehler bezeichnen. Erläuterung:
In Vim akzeptieren Befehle eine Zählung. Erhöht beispielsweise
<C-a>
eine Zahl,7<C-a>
erhöht aber eine Zahl um 7. Sie können sie jedoch nicht0
als Zählung verwenden, da0
ist schon ein Befehl (gehe in die erste Spalte), undIm Kontext eines Texteditors ist es selten sinnvoll, die 0-fache Ausführung eines Befehls anzufordern.
Dies ist für einen Texteditor in Ordnung, für eine Golfsprache jedoch normalerweise unangenehm. Daher überschreibt V einige Befehle, sodass dies
0
eine gültige Anzahl ist. Zum Beispielé
,ñ
,Ä
, und einige andere. Da es sich jedoch<C-a>
um einen integrierten vim-Befehl handelt, wird dieser nicht überschrieben. Wenn Sie diesen Befehl also mit einer positiven Eingabe ausführen, erhalten Sie Folgendes:Aber wenn Sie mit 0 als Eingabe ausführen, erhalten Sie:
Vollständige Erklärung:
quelle
0
keine Zählung gibt, ist nützlich. Ich habe es anfangs gar nicht in Betracht gezogen, weil ich es so oft gemieden habeJ , 2 Bytes
Probieren Sie es online!
^
zur Macht erhoben*
das Vorzeichen des Arguments (0 wenn 0 sonst 1)Weil
1=0^0
in J.quelle
Haskell, 5 Bytes
Anwendungsbeispiel:
(max 1) 0
->1
.Es gibt nicht viel zu erklären.
quelle
dc, 7
Beruht auf der Tatsache, dass
dc
0 0 bis 1 ausgewertet wird , aber 0 n bis 0 für alle anderen n.Probieren Sie es online aus .
quelle
R, 13 Bytes
liest
n
aus stdin. Mitpmax
kann es eine Liste einlesen und den entsprechenden Wert für jedes Element in der Liste für +1 Byte zurückgeben.versuche es online!
Ich sollte beachten, dass es eine andere feine R-Lösung in 13 Bytes von Sven Hohenstein gibt, die eine weitere 13-Byte-Lösung von ermöglicht
was mich fragt, ob das die untere Grenze für R ist.
quelle
pryr
:pryr::f(n+!n)
. Kann nichts kleineres finden ...Cubix , 6 Bytes
Irgendwie ist es gelungen, es auf einen Einheitswürfel zu montieren ... Testen Sie es online!
Erläuterung
Vor der Ausführung wird der Code als Würfelnetz angeordnet:
Der IP (Anweisungszeiger) befindet sich dann ganz links (
I
) und zeigt nach rechts. Die Anweisungen, die von dort ausgeführt werden, sind:Die IP schlägt dann
!
erneut zu und überspringt@
die Unterseite. Dies ist nicht hilfreich, da wir das drücken müssen,@
um das Programm zu beenden. Die IP schlägtL
erneut zu und durchläuft die mittlere Zeile in umgekehrter Reihenfolge (L1!I
), bevor sieL
ein weiteres Mal endet , wodurch die IP schließlich aktiviert wird@
.quelle
Brainfuck , 8 Bytes
Probieren Sie es online!
quelle
V , 5 Bytes
Wo
<C-a>
ist0x01
.Probieren Sie es online!
Erläuterung
quelle
Gelee, 2 Bytes
Probieren Sie es online!
Ziemlich genau meine Pyth-Antwort, aber es ist mein erstes Jelly-Programm.
quelle
Oasis , 2 Bytes
Verwendet die folgende Formel: a (0) = 1 , a (n) = n
Probieren Sie es online!
quelle
>V
.R
2016 Bytesquelle
Brachylog , 3 Bytes
Probieren Sie es online!
Erläuterung
Wenn wir die impliziten
?
(Input) und.
(Output) hinzufügen , haben wir:quelle
MarioLANG , 12 Bytes
Probieren Sie es online!
Wie es funktioniert
Mario beginnt oben links und geht zunächst nach rechts. Er liest ein int von input (
;
) und speichert es in der aktuellen Speicherzelle. Dann fällt er vom Boden (=
) und trifft[
, wodurch er den nächsten Befehl ignoriert, wenn die aktuelle Zelle 0 ist.Wenn die Zelle nicht 0 ist, geht er nach links (
<
), gibt die aktuelle Zelle als int (:
) aus und fällt in den Tod (Programmende).Wenn die Zelle 0 ist, ignoriert er den Befehl, nach links abzubiegen, und geht weiter nach rechts. Er erhöht die aktuelle Zelle (
+
), gibt sie aus und fällt in den Tod.quelle
Brain-Flak ,
22, 10 BytesProbieren Sie es online!
Erläuterung:
Wenn die Eingabe nicht Null ist,
{{}}
wird alles vom Stapel genommen und als Eingabe ausgewertet. Wenn es Null ist, wird nichts geknallt und es wird zu Null ausgewertet. So läuft({{}})
esNicht-Null:
Null:
An dieser Stelle addieren wir die Höhe des Stapels (0 für nicht Null, 1 für Null) und entfernen einen weiteren Wert vom Stapel. (Da der Stapel mit einer unendlichen Anzahl von Nullen aufgefüllt ist, wird entweder die oberste 0 oder eine zusätzliche 0 eingefügt.)
quelle
TI-BASIC, 7 Bytes
Alternative,
TI-BASIC, 7 Bytes
quelle
Hexagonie ,
76 BytesErweitert:
Probieren Sie es online!
1 Byte gespart dank Martin!
Wenn die Zahl ungleich Null ist, drucken Sie sie, andernfalls fügen Sie eine hinzu und drucken Sie sie stattdessen aus.
quelle
APL (Dyalog) , 3 Bytes
Probieren Sie es online!
Dies nimmt die Obergrenze des Arguments und
1
.quelle
Python, 15 Bytes
quelle
n or 1
6 Bytes?The rules are not terribly clear. I think we have a consensus on meta that REPLs count, but as a separate language, which would allow snippets in many cases, but snippets are not permitted according to this meta post
-> codegolf.meta.stackexchange.com/questions/2419/…1or n
würde immer zurückkehren1
, nicht wahr ?lambda n:n|1>>n
Gleichstrom, 11 Bytes
[1]sf
speichert ein Makro in Register f, das 1 an die Spitze des Stapels schiebt, die?
Eingabe liest,d0=f
das Makro f ausführt, wenn die Eingabe 0 war, undp
die Spitze des Stapels druckt.Prüfung:
quelle
Excel, 10 Bytes
Dies spart 4 Bytes gegenüber der offensichtlichen 'IF'-Anweisungslösung
=IF(A1=0,1,A1)
.quelle
=A1+NOT(A1)
Java 8, 10 Bytes
quelle
i==0
kann ersetzt werden durchi<1
R, 13 Bytes
Hier
scan
wird verwendet, um den Eingabewert zu lesenn
. Die Negation vonn
(dh!n
0 oder 1) wird zu addiertn
.quelle
Mathematica,
98 BytesPer Martin Ender:
Erste Idee:
Reine Funktion mit ersetzt
0
mit1
. Der Raum ist notwendig oder er denkt, wir teilen uns durch.0
.quelle
Perl 5, 6 + 2 Bytes für die Flags -l und -p
Übernimmt Eingaben in separaten Zeilen von stdin. Läuft mit den Flaggen
-lp
.quelle