Zählen Sie Leute!

30

Einführung

Es mag seltsam klingen, aber wir haben nicht EINE Herausforderung für das Zählen von 1bis neinschließlich.

Das ist nicht dasselbe. Das ist eine (abgeschlossene) nicht gut erklärte Herausforderung.
Das ist nicht dasselbe. In diesem Fall geht es darum, auf unbestimmte Zeit hochzuzählen.

Herausforderung

Schreiben Sie ein Programm oder eine Funktion, die jede ganze Zahl von 1bis neinschließlich ausgibt.

Regeln

  • Sie können njeden Weg bekommen.
  • Sie können davon ausgehen, dass dies nimmer eine positive ganze Zahl ist.
  • Sie können nin jeder Basis erhalten, aber Sie sollten immer in Dezimalzahlen ausgeben.
  • Die Ausgabe muss durch ein beliebiges Zeichen (oder Muster) getrennt werden, das nicht in enthalten ist 0123456789. Nicht-dezimale führende oder nachfolgende Zeichen sind zulässig (z. B. bei Verwendung von Arrays wie [1, 2, 3, 4, 5, 6]).
  • Standardlücken werden verweigert.
  • Wir wollen den kürzesten Ansatz in jeder Sprache finden, nicht die kürzeste Sprache, deshalb werde ich keine Antwort akzeptieren.
  • Sie müssen Ihre Antwort (en) nach dieser Änderung aktualisieren. Antworten, die vor der letzten Änderung veröffentlicht wurden, müssen der Änderungsregel für Standardlücken entsprechen (ich wollte sie nicht ablehnen, aber ich wollte die Community nicht zum Brüllen bringen, also Ich habe sie bestritten).
  • Sie können eine beliebige Sprachversion (oder Sprache) nach der Datierung verwenden. Sie können keine Sprache oder Sprachversion verwenden, die nur für diese Herausforderung erstellt wurde.

Boni

20%

  • Ihr Programm muss mindestens bis 18446744073709551615( 2^64-1) zählen können. Wenn beispielsweise ein neuer Datentyp die einzige Möglichkeit ist, große Ganzzahlen zu unterstützen, müssen Sie ihn erstellen. Wenn Ihre Sprache keine Möglichkeit hat, große Ganzzahlen bis zu 2 ^ 64-1 zu unterstützen, muss stattdessen die Obergrenze dieser bestimmten Sprache unterstützt werden.

EDIT : Ich habe das Limit von 2^64auf geändert2^64-1 , um mehr Antworten zu ermöglichen.

EDIT : Ich habe die 2 ^ 64-1-Regel zu einem Bonus gemacht, da an dieser Herausforderung nicht viel Interesse bestand. Wenn Ihre Antwort 2 ^ 64-1 unterstützt, können Sie sie jetzt bearbeiten, um den Bonus einzuschließen. Sie können auch eine Antwort posten, die diese nicht unterstützt, wenn sie kürzer ist.

Erik der Outgolfer
quelle
6
Verbunden.
Martin Ender
"Sie können njeden Weg bekommen." Heißt das, wir können davon ausgehen n, dass wir in einer Variablen gespeichert sind?
Fehler
@flawr Sie erhalten n jede mögliche Weise. Sie können es in einer Variablen speichern, aber es darf nicht fest codiert sein.
Erik der Outgolfer
Es kann nützlich sein, eine Verknüpfung zu den akzeptierten E / A-Methoden
herzustellen
@Ephatha Ja, es ist wahrscheinlich, diese Herausforderung stammt aus alten Zeiten, in denen ich ein absoluter Neuling war.
Erik der Outgolfer

Antworten:

60

MarioLANG , 29 Bytes

;
)    <
+===="
>:(-[!
=====#

Probieren Sie es online!

Ich weiß, mein Code ist traurig, sehr traurig oder wütend:



> :(

Glückliches MarioLANG, 46 Bytes

;
)       <
+======="
>  >((-[!
=:)^====#
 ===

Probieren Sie es online!

Ein glücklicherer Ansatz:




 :)

Nicht-emotionales MarioLANG, 41 Bytes

;
)     <
+====="
> >(-[!
= "===#
 :!
 =#

Probieren Sie es online!

Erik der Outgolfer
quelle
1
Es gibt immer noch Emotionen im letzten Ausschnitt :!;)
Cookie
1
@cookie In diesem Fall kann man eine Menge Dinge als Emoticon mit etwas Fantasie sehen, wie =#, oder >(, oder (-[, usw. Auch keine Ahnung warum, aber es gibt anscheinend eine Liste von Wikipedia-Emoticons , die weder enthält :!noch enthält einer von denen, die ich erwähnt habe.
Kevin Cruijssen
19 Bytes inspiriert von einer anderen Frage.
Dorian
28

Pyth, 1 Byte

S

Der Text muss mindestens 30 Zeichen lang sein. Sie haben 14 eingegeben.

orlp
quelle
2
Das sagst du? Ich hatte mit dem Titel zu kämpfen!
Erik der Outgolfer
43
Das liegt daran, dass Sie keine Erklärung hinzugefügt haben. Wie sollen wir solch komplizierten Code ohne Erklärung verstehen?
Luis Mendo
10
Nein. Dieser Code ist weit jenseits meines Verständnisses. Zu lang, ich kann nicht so komplizierte logische Struktur erfassen: -P
Luis Mendo
7
@ LuisMendo Ich weiß ... orlp muss ein Genie gewesen sein, um solch ein langes Stück Code mit solch fortgeschrittener Logik zu verstehen. : P
HyperNeutrino
1
Sie sind immer noch der aktuelle Gewinner!
Erik der Outgolfer
16

Cjam, 5 Bytes

{,:)}

Probieren Sie es online!

Dies ist ein unbenannter Block, der nauf dem Stapel erwartet und eine Liste mit dem Bereich [1...n]darauf hinterlässt .
Bilden Sie einfach den Bereich mit ,und erhöhen Sie dann jedes Bereichselement mit :), um den Bereich einseitig zu machen.

Denker
quelle
9
+1 für einen Smiley, der auf mysteriöse Weise im Code :)
auftauchte
1
@ zyabin101 Das Smiley-Gesicht ist ein sehr häufiges Auftreten von CJam!
Ein Simmons
4
@ASimmons Abschluss Cjam ist glücklich?
Erik der Outgolfer
14

Mathematica, 5 Bytes

Range

Einfach genug.

Ein Simmons
quelle
33
Nicht einfach, wenn Sie sich diese Sprache leisten müssen :(
Erik the Outgolfer
1
@ ΈρικΚωνσταντόπουλος Ich würde jetzt argumentieren, dass reiche Leute es leichter haben, aber Sie haben es geschafft, diese Antwort um 4 Bytes zu schlagen;)
Sebb
@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Ich weiß, es ist eine lange Zeit nach deinem Kommentar, aber du bezahlst nicht, um dir die Sprache zu leisten , du bezahlst für die Sprache.
NoOneIsHere
@NoOneIsHere zu leisten bedeutet, das Eigentum an etwas durch Bezahlung zu beanspruchen. Ich denke, Sie meinen, es gibt ein Abonnement anstelle einer einmaligen Zahlung.
Erik der Outgolfer
@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Es gibt eine einmalige Zahlung in Höhe von ca. 150 USD, aber um weiter zu streiten, lass uns ins Gespräch gehen .
NoOneIsHere
14

Hexagony, 19

$@?!{M8.</(=/>').$;

Oder im erweiterten Sechseckformat:

  $ @ ?
 ! { M 8
. < / ( =
 / > ' ) 
  . $ ;

Vielen Dank an Martin für die Idee dieses Programm, ich habe es nur golfed in einer Seitenlänge 3 Sechseck passen.

Probieren Sie es online!

Ich habe keine fantastischen Hexagony-bezogenen Programme von Timwi, daher wird diese Erklärung nicht sehr farbenfroh sein. Stattdessen können Sie einen riesigen Textklumpen lesen. Ist das nicht nett

In jedem Fall beginnt die IP in der oberen linken Ecke des $Fensters und bewegt sich nach Osten, wenn Sie sich vorstellen, dass dieses Programm mit der Nordausrichtung nach oben auf einer Karte platziert wurde. Das $veranlasst uns, den nächsten Befehl zu überspringen @, der das Programm beenden würde. Stattdessen wird ausgeführt, ?wodurch die aktuelle Speicherflanke als Eingangsnummer festgelegt wird. Jetzt erreichen wir das Ende der Reihe, die uns zur mittleren Reihe des Sechsecks führt und sich immer noch nach Osten bewegt.

Der größte Teil des Programms besteht aus einer Schleife. Wir fangen mit .dem No-Op an. Als nächstes stoßen wir auf eine Gabelung im ... äh ... Sechseck ... die <Anweisung bewirkt, dass sich die IP um 60 Grad nach rechts dreht, wenn die aktuelle Speicherflanke positiv ist, andernfalls drehen wir uns um 60 Grad nach links. Da wir uns nach Osten bewegen, ist unser Kurs entweder nach Süden oder nach Nordosten. Da die Eingabe größer als Null (und daher positiv) ist, beginnen wir immer mit dem Südosten.

Als nächstes treffen wir eine, >die uns nach Osten umleitet; Diese Operatoren gabeln sich nur, wenn Sie den Gabelteil treffen. Dann treffen wir, 'welche Änderungen welchen Erinnerungsrand wir betrachten. Dann treffen wir, )was den Wert der aktuellen Speicherflanke erhöht. Da alle Speicherflanken bei 0 beginnen, erhalten wir beim ersten Mal den Wert 1. Als nächstes springen wir in die zweite bis oberste Zeile und führen !den Ausdruck unserer Nummer aus. Dann bewegen wir uns mit zu einer anderen Flanke {und speichern den ASCII-Wert von M multipliziert mit 10 plus 8 (778). Dann springen wir zurück zur vorletzten Zeile des Sechsecks und drücken die Taste /. Dies führt dazu, dass wir nach Nordwesten ziehen. Wir gehen rechts unten am vorbei . Dies druckt die aktuelle Speicherflanke mod 256 als ASCII aus. Dies ist zufällig ein Zeilenumbruch. Wir treffen. in der mittleren Reihe vorbei und kommen an der heraus;' was uns zurück zu der ersten Kante bringt, die den Wert hat, den wir eingelesen haben. Das Treffen, /das uns veranlasst, wieder nach Osten zu gehen. Dann treffen wir, (was den Wert dekrementiert. =veranlasst uns, wieder die richtige Richtung für das zukünftige Gedächtnisspringen einzuschlagen.

Da der Wert nun positiv ist (es sei denn, er ist Null), kehren wir zum unteren Rand des Sechsecks zurück. Hier schlagen wir zu, .dann springen wir über das, ;damit nichts passiert, und wir kehren zum Anfang der Schleife zurück. Wenn der Wert Null ist, kehren wir zum Anfang des Programms zurück, wo dasselbe wieder passiert, aber ?keine andere Zahl gefunden wird, und wir nehmen den anderen Verzweigungspfad. Dieser Weg ist relativ einfach: Wir treffen, {was den Speicherrand verändert, aber es ist uns egal, dann treffen wir, @was das Programm beendet.

FryAmTheEggman
quelle
11

MATL, 1 Byte

:

Beispielausgabe:

15
1  2  3  4  5  6  7  8  9 10 11 12 13 14 15

Probieren Sie es hier online aus

Stewie Griffin
quelle
1
Wie funktioniert das? Ich verstehe nicht, wie diese erweiterte Codestruktur funktioniert. :-P
HyperNeutrino
11

GNU Coreutils, 6 Bytes

seq $1

geteilte Antwort auf pure Bash, siehe unten ...

rexkogitans
quelle
1
für mich ist die beste bash / etc antwort ^^ perfektes tool-to-job verhältnis.
Olivier Dulac
10

R, 13 Bytes

cat(1:scan())

Body muss mindestens 30 Zeichen lang sein.

Masclins
quelle
Ich kann deine Antwort nicht bearbeiten lol.
Erik der Outgolfer
@ ΈρικΚωνσταντόπουλος Sie können nur genehmigungspflichtige Änderungen mit Ihrem aktuellen Ruf vorschlagen. Bitte beachten Sie, dass der Bearbeitungscode hier nicht willkommen ist. Wenn Sie Golf-Ratschläge haben, schreiben Sie einen Kommentar, damit der Autor ihn testen kann, bevor Sie die Lösung aktualisieren.
Denker
@DenkerAffe Ich meinte, die Schaltfläche zum Bearbeiten war vorher ausgegraut.
Erik der Outgolfer
1
Ich mache, wenn ich will, dass es geschrieben wird, auch wenn Sie das Skript aufrufen.
Masclins
9
Ich dachte, ein CAT-Scan wäre am besten geeignet, um Knochenverletzungen zu untersuchen, Lungen- und Brustprobleme zu diagnostizieren und Krebs zu entdecken, ohne zu zählen.
Stewie Griffin
10

Javascript 182 177 160 154 139 138 132 Bytes (gültig)

1 Byte gespart dank @ShaunH

n=>{c=[e=0];for(;c.join``!=n;){a=c.length-1;c[a]++;for(;a+1;a--){c[a]+=e;e=0;if(c[a]>9)c[a]=0,e++;}e&&c.unshift(1);alert(c.join``)}}

Willkürliche Präzision zur Rettung!

Da Javascript nur bis zu 2 ^ 53-1 zählen kann (Danke an @ MartinBüttner für den Hinweis), musste ich dafür eine willkürliche Präzision schaffen. Es speichert Daten in einem Array und fügt bei jedem "Häkchen" 1 zum letzten Element hinzu, durchläuft dann das Array und setzt dieses Element auf 0, wenn etwas über 9 liegt, und fügt 1 zum Element auf der linken Seite hinzu.

Probieren Sie es hier aus! Hinweis: Drücken Sie F12, um das Ergebnis tatsächlich zu sehen, da ich Sie nicht auf Textfelder warten lassen wollte.

Übrigens: Ich war der einzige, der nicht wusste, dass ternäre Operatoren im Codegolf so nützlich sind.

if(statement)executeSomething();

ist länger als

statement?executeSomething():0;

um 1 Byte.

Javascript, 28 Bytes (ungültig - kann nicht bis 2 64 zählen )

n=>{for(i=0;i++<n;)alert(i)}
Bálint
quelle
2
Ja, du warst der einzige: P
Erik der Outgolfer
Kann die ungültige Version bis zu 2 ^ 64-1 zählen? Wenn ja, ist es dank der neuen Regeln gültig.
Erik der Outgolfer
@ ΈρικΚωνσταντόπουλος Nein, nur bis 2 ^ 53-1
Bálint
Denn wenn &&es auch nützlich sein kann, wenn es sonst nichts gibt , muss man vorsichtig sein, wenn es um Kohersion geht. condition&&action()
Shaun H
1
e?c.unshift(1):0um e&&c.unshift(1)ein Byte zu speichern
Shaun H
9

Java 8, 43/69/94 Bytes

Durchgestrichene 44 ist immer noch eine normale 44 - warte, ich habe es nicht durchgestrichen, ich habe es nur ersetzt :(

Wenn ich ein zurückgeben kann LongStream: ( 43 bytes)

n->java.util.stream.LongStream.range(1,n+1)

Dies ist ein Lambda für a Function<Long,LongStream>. Technisch sollte ich rangeClosedstattdessen verwenden range, da ich auf diese Weise einen von meinem maximalen Input abschneide, der aber rangeClosedlänger ist alsrange .

Wenn ich in der Funktion drucken muss: ( 69 bytes)

n->java.util.stream.LongStream.range(1,n+1).peek(System.out::println)

Dies ist ein Lambda für a Consumer<Long>. Technisch missbrauche ich peek, da es sich um eine Zwischenoperation handelt , was bedeutet, dass dieses Lambda technisch LongStreamwie das erste Beispiel zurückgegeben wird. Ich sollte verwendenforEach stattdessen verwenden. Auch hier ist Golf kein schöner Code.

Leider, denn long‚s - Bereich ist ein signiertes 64-Bit - Integer, nicht erreicht es nicht die angeforderte 2^64-1, sondern lediglich 2^63-1.

Allerdings bietet Java SE 8 Funktionalität zu behandeln longs , als ob sie ohne Vorzeichen waren, durch spezifische Methoden , die auf der anrufenden LongKlasse explizit. Da Java immer noch Java ist, ist dies leider ziemlich umständlich, obwohl es kürzer ist als die BigInteger-Version, die es ersetzt. ( 94 bytes)

n->{for(long i=0;Long.compareUnsigned(i,n)<0;)System.out.println(Long.toUnsignedString(++i));}

Dies ist ein Consumer<Long>, wie der vorherige.

Und einfach zu lang, um Schriftrollen zu vermeiden.

CAD97
quelle
2 ^ 64-1 Limit geändert: D
Erik the Outgolfer
1
Sollte nicht die erste Funktion sein n->java.util.stream.LongStream.range(1,n+1)?
Mego
2
@ zyabin101>.> Sie haben nichts gesehen
CAD97
1
@ KevinCruijssen Es würde helfen, außer der Grund für die Verwendung der BigIntegerist, dass die Verwendung eines int(oder sogar long) für den Iterator nicht groß genug ist.
CAD97
1
Ich lag falsch; J8 bietet Methoden für die Verwendung longohne Vorzeichen, daher ist die Verwendung dieser Methoden kürzer als der BigIntegerAnsatz. (Es wäre nicht gewesen, wenn wir unsere eigene, unsignierte Langzeitbehandlung durchführen müssten, wie Sie es vor J8
getan haben
7

MATLAB, 7 Bytes

Eine unbenannte anonyme Funktion:

@(n)1:n

Rennen wie:

ans(10)
ans =
     1     2     3     4     5     6     7     8     9    10

Teste es hier!


Wenn ein volles Programm benötigt wird, 17 Bytes:

disp(1:input(''))
10
     1     2     3     4     5     6     7     8     9    10

Teste es hier!

Stewie Griffin
quelle
7

Haskell, 10 Bytes

f n=[1..n]

Anwendungsbeispiel: f 4-> [1,2,3,4].

nimi
quelle
Sie müssen nicht fest codieren n, Sie müssen nehmen n.
Erik der Outgolfer
4
@ ΈρικΚωνσταντόπουλος nist hier nicht fest codiert - es ist ein Funktionsargument. Die Haskell-Syntax kann für Leute, die an C-ähnliche Syntax gewöhnt sind, ungewöhnlich sein.
Mego
@Mego Oh, ich war mit dem Anwendungsbeispiel verwechselt.
Erik der Outgolfer
7

MarioLANG , 19 Bytes

;
)<
+"
:[
(-
>!
=#

Probieren Sie es online!

Vertikale Programme eignen sich normalerweise besser für einfache Loops in MarioLANG. Ich bin mir nicht sicher, was der Dolmetscher tut, wenn er [in einem Aufzug vorkommt, aber es scheint, als würde er das Programm beenden, wenn die aktuelle Zelle 0 ist. Das ist wahrscheinlich ein nützlicher Trick im Allgemeinen.

Erläuterung

MarioLANG ist eine Brainfuck-ähnliche Sprache (mit einem unendlichen Speicherband von Ganzzahlen mit willkürlicher Genauigkeit), in der der Befehlszeiger an Mario erinnert, der herumläuft und herumspringt.

Mario beginnt in der oberen linken Ecke und fällt nach unten. ;Liest eine Ganzzahl aus STDIN und platziert sie in der aktuellen Speicherzelle. Nun beachte, dass =es sich bei Mario um eine Bodenzelle handelt, auf der er gehen "und #einen Aufzug bilden kann (wobei Mario #der Start ist) !. Das >und <stellte seine Bewegungsrichtung ein. Wir können sehen, dass dies eine einfache Schleife ergibt, die den folgenden Code enthält:

)   Move memory pointer one cell right.
+   Increment (initially zero).
:   Print as integer, followed by a space.
(   Move memory pointer one cell left.
-   Decrement.
[   Conditional, see below.

Normalerweise [würde nun Mario abhängig davon, ob die aktuelle Zelle Null ist oder nicht, das nächste Mal überspringen. Das heißt, solange der Zähler nicht Null ist, geschieht nichts. Es sieht jedoch so aus, als ob Mario [beim Fahren eines Aufzugs auf die aktuelle Zelle stößt und das 0Programm einfach sofort mit einem Fehler beendet wird. Das heißt, wir müssen nicht einmal einen Weg finden, um ihn korrekt umzuleiten.

Martin Ender
quelle
Es beendet das Programm, weil es "fällt", denke ich.
Erik der Outgolfer
56 hast du auch gewählt?
Erik der Outgolfer
@ ΈρικΚωνσταντόπουλος Ich kann anscheinend keinen Ort finden, an den Mario fällt. Es sieht so aus, als würde der Interpreter nur mit einem Fehler direkt am ende enden [, was eigentlich noch praktischer ist.
Martin Ender
TIO tendiert dazu, keine Fehlermeldungen (STDERR) anzuzeigen, wenn Debug nicht aktiviert ist. Es scheint , es ist in der Tat ein Fehler auf .
Erik der Outgolfer
@ ΈρικΚωνσταντόπουλος Ja, und das ist tatsächlich gut, da STDERR ignoriert wird, sofern nicht anders angegeben.
Martin Ender
6

Joe - 2 oder 6

Während Sie die inklusive Variante der Bereichsfunktion nutzen können.

1R

..das ist langweilig! Nehmen wir stattdessen die kumulative Summe ( \/+) einer Tabelle mit Einsen der Form n ( 1~T).

\/+1~T
seequ
quelle
Können Sie einen Link zur Sprache
bereitstellen
@Downgoat github.com/JaniM/Joe
seequ
4

Pyth - 3 2 Bytes

Dank @DenkerAffe 1 Byte gespart.

Ohne das eingebaute zu benutzen.

hM

Probieren Sie es online aus .

Maltysen
quelle
hMwenn Sie wirklich Lust bekommen wollen :)
Denker
@DenkerAffe oh ja, stimmt.
Maltysen
Sie haben vergessen, Ihre Byteanzahl zu aktualisieren.
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ-.-
Maltysen
@ ΈρικΚωνσταντόπουλος orlp hat die eingebaute Antwort bereits gegeben.
Maltysen
4

dc, 15

?[d1-d1<m]dsmxf

Eingabe von stdin gelesen. Dies zählt ab n, indem eine Kopie jeder Zahl auf den Stapel gelegt wird. Der Stapel wird dann als eins mit der ausgegebenf Befehl , sodass die Zahlen in der richtigen aufsteigenden Reihenfolge gedruckt werden.

Da alle Zahlen auf den Stack verschoben werden, ist es sehr wahrscheinlich, dass der Speicher knapp wird, bevor er sich 2 ^ 64 annähert. Wenn dies ein Problem ist, können wir dies stattdessen tun:


dc, 18

?sn0[1+pdln>m]dsmx
Digitales Trauma
quelle
Vielleicht funktioniert es mit 2 ^ 64-1 (dem neuen Limit).
Erik der Outgolfer
Dem ersten wird der Speicherplatz ausgehen, lange bevor Sie 2 ^ 64-1 erreichen. Die zweite geht glücklich weiter, bis unsere Sonne untergeht
Digitales Trauma
@DigitalTraumaskcsockso Ich meinte, dass Sie Ihre zweite Antwort bearbeiten können, wenn sie für 2 ^ 64-1 kürzer ist.
Erik der Outgolfer
@ ΈρικΚωνσταντόπουλος dc , wie bcverwendet beliebige Genauigkeit Mathe standardmäßig und damit solche Grenzen sind für diese Sprache irrelevant.
Digital Trauma
4

ArnoldC, 415 Bytes

IT'S SHOWTIME
HEY CHRISTMAS TREE n
YOU SET US UP 0
GET YOUR ASS TO MARS n
DO IT NOW
I WANT TO ASK YOU A BUNCH OF QUESTIONS AND I WANT TO HAVE THEM ANSWERED IMMEDIATELY
HEY CHRISTMAS TREE x
YOU SET US UP n
STICK AROUND x
GET TO THE CHOPPER x
HERE IS MY INVITATION n
GET DOWN x
GET UP 1
ENOUGH TALK
TALK TO THE HAND x
GET TO THE CHOPPER x
HERE IS MY INVITATION n
GET DOWN x
ENOUGH TALK
CHILL
YOU HAVE BEEN TERMINATED

Das einzige, was von Interesse ist, ist die Verwendung von nx (wobei n das Ziel und x die inkrementierte Variable ist), um das Ende der while-Schleife zu testen, anstatt eine dedizierte Variable zu haben. Am Ende habe ich also nx und n- (nx) = x in jeder Schleife laufen

Hinweis : Ich kann nur bis 2 ^ 31-1 zählen. Nun, ich denke, die Terminatoren sind doch keine wirkliche Gefahr.

Drolex
quelle
3
Natürlich gibt es eine Programmiersprache, die sich an Arnold Schwarzenegger-Memes orientiert ...
Nzall
4

Piet, 64 Codels Codegröße 1

Mit Codegröße 20:

Codegröße 20

Npiet Spurenbilder

Erste Schleife:

tracestart

Verbleibende Spur für n=2:

traceend

Anmerkungen

  • Noch keine Piet-Antwort? Lassen Sie mich das mit meinem ersten Piet-Programm beheben! Dies könnte bei besseren Würfeln und weniger Zeigermanipulation wahrscheinlich kürzer sein ...

  • Die obere unterstützte Grenze hängt von der Implementierung des Interpreters ab. Theoretisch wäre es möglich, mit dem richtigen Interpreter beliebig große Zahlen zu unterstützen.

  • Der Begrenzer ist ETX(Ascii 3), dies kann jedoch in dieser Antwort nicht richtig angezeigt werden, so dass ich sie einfach weglassen werde. Es funktioniert in der Konsole:

Bildbeschreibung hier eingeben

Ausgabe

Input:  1
Output: 1

Input:  20
Output: 1234567891011121314151617181920

Input:  100
Output: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100

Undefined behaviour:

Input:  -1
Output: 1

Input:  0
Output: 1

Npiet Spur für n=2

trace: step 0  (0,0/r,l nR -> 1,0/r,l lB):
action: in(number)
? 2
trace: stack (1 values): 2

trace: step 1  (1,0/r,l lB -> 2,0/r,l nB):
action: push, value 1
trace: stack (2 values): 1 2

trace: step 2  (2,0/r,l nB -> 3,0/r,l nG):
action: duplicate
trace: stack (3 values): 1 1 2

trace: step 3  (3,0/r,l nG -> 4,0/r,l dY):
action: out(number)
1
trace: stack (2 values): 1 2

trace: step 4  (4,0/r,l dY -> 5,0/r,l lY):
action: push, value 1
trace: stack (3 values): 1 1 2

trace: step 5  (5,0/r,l lY -> 6,0/r,l lG):
action: add
trace: stack (2 values): 2 2

trace: step 6  (6,0/r,l lG -> 7,0/r,l lR):
action: duplicate
trace: stack (3 values): 2 2 2

trace: step 7  (7,0/r,l lR -> 10,0/r,l nR):
action: push, value 3
trace: stack (4 values): 3 2 2 2

trace: step 8  (10,0/r,l nR -> 12,0/r,l dR):
action: push, value 2
trace: stack (5 values): 2 3 2 2 2

trace: step 9  (12,0/r,l dR -> 13,0/r,l lB):
action: roll
trace: stack (3 values): 2 2 2

trace: step 10  (13,0/r,l lB -> 14,0/r,l lG):
action: duplicate
trace: stack (4 values): 2 2 2 2

trace: step 11  (14,0/r,l lG -> 15,2/d,r nG):
action: push, value 3
trace: stack (5 values): 3 2 2 2 2

trace: step 12  (15,2/d,r nG -> 15,3/d,r dG):
action: push, value 1
trace: stack (6 values): 1 3 2 2 2 2

trace: step 13  (15,3/d,r dG -> 14,3/l,l lR):
action: roll
trace: stack (4 values): 2 2 2 2

trace: step 14  (14,3/l,l lR -> 13,1/l,r lC):
action: greater
trace: stack (3 values): 0 2 2

trace: step 15  (13,1/l,r lC -> 11,1/l,r nC):
action: push, value 3
trace: stack (4 values): 3 0 2 2

trace: step 16  (11,1/l,r nC -> 10,1/l,r lB):
action: multiply
trace: stack (3 values): 0 2 2

trace: step 17  (10,1/l,r lB -> 9,1/l,r nY):
action: pointer
trace: stack (2 values): 2 2

trace: step 18  (9,1/l,r nY -> 7,1/l,r dY):
action: push, value 2
trace: stack (3 values): 2 2 2

trace: step 19  (7,1/l,r dY -> 6,1/l,r lY):
action: push, value 1
trace: stack (4 values): 1 2 2 2

trace: step 20  (6,1/l,r lY -> 5,1/l,r nM):
action: roll
trace: stack (2 values): 2 2

trace: step 21  (5,1/l,r nM -> 4,1/l,r dM):
action: push, value 3
trace: stack (3 values): 3 2 2

trace: step 22  (4,1/l,r dM -> 3,1/l,r lG):
action: pointer
trace: stack (2 values): 2 2

trace: step 23  (3,1/d,r lG -> 2,3/l,l nG):
action: push, value 3
trace: stack (3 values): 3 2 2

trace: step 24  (2,3/l,l nG -> 2,2/u,r lY):
action: out(char)

trace: stack (2 values): 2 2
trace: white cell(s) crossed - continuing with no command at 2,0...

trace: step 25  (2,2/u,r lY -> 2,0/u,r nB):

trace: step 26  (2,0/u,r nB -> 3,0/r,l nG):
action: duplicate
trace: stack (3 values): 2 2 2

trace: step 27  (3,0/r,l nG -> 4,0/r,l dY):
action: out(number)
2
trace: stack (2 values): 2 2

trace: step 28  (4,0/r,l dY -> 5,0/r,l lY):
action: push, value 1
trace: stack (3 values): 1 2 2

trace: step 29  (5,0/r,l lY -> 6,0/r,l lG):
action: add
trace: stack (2 values): 3 2

trace: step 30  (6,0/r,l lG -> 7,0/r,l lR):
action: duplicate
trace: stack (3 values): 3 3 2

trace: step 31  (7,0/r,l lR -> 10,0/r,l nR):
action: push, value 3
trace: stack (4 values): 3 3 3 2

trace: step 32  (10,0/r,l nR -> 12,0/r,l dR):
action: push, value 2
trace: stack (5 values): 2 3 3 3 2

trace: step 33  (12,0/r,l dR -> 13,0/r,l lB):
action: roll
trace: stack (3 values): 2 3 3

trace: step 34  (13,0/r,l lB -> 14,0/r,l lG):
action: duplicate
trace: stack (4 values): 2 2 3 3

trace: step 35  (14,0/r,l lG -> 15,2/d,r nG):
action: push, value 3
trace: stack (5 values): 3 2 2 3 3

trace: step 36  (15,2/d,r nG -> 15,3/d,r dG):
action: push, value 1
trace: stack (6 values): 1 3 2 2 3 3

trace: step 37  (15,3/d,r dG -> 14,3/l,l lR):
action: roll
trace: stack (4 values): 2 3 2 3

trace: step 38  (14,3/l,l lR -> 13,1/l,r lC):
action: greater
trace: stack (3 values): 1 2 3

trace: step 39  (13,1/l,r lC -> 11,1/l,r nC):
action: push, value 3
trace: stack (4 values): 3 1 2 3

trace: step 40  (11,1/l,r nC -> 10,1/l,r lB):
action: multiply
trace: stack (3 values): 3 2 3

trace: step 41  (10,1/l,r lB -> 9,1/l,r nY):
action: pointer
trace: stack (2 values): 2 3
trace: white cell(s) crossed - continuing with no command at 9,3...

trace: step 42  (9,1/d,r nY -> 9,3/d,l nR):
Marv
quelle
Hat es null Bytes zwischen Zahlen?
Erik der Outgolfer
@ ΈρικΚωνσταντόπουλος was meinst du? In der Konsole sehen Sie das ETXZeichen (Ascii 3), das die Ausgaben aufteilt. Das ETX-Zeichen kann auf dieser Site jedoch nicht angezeigt werden.
Marv
4

JavaScript (ES6), 77 76 63 59 58 Bytes

n=>{for(s=a=b=0;s!=n;console.log(s=[a]+b))a+=!(b=++b%1e9)}

Nimmt die Eingabe nals Zeichenfolge, sollte bis zu 9007199254740991999999999 unterstützen

Erklärt:

n=>{ //create function, takes n as input
    for( //setup for loop
        s=a=b=0; //init s, a, and b to 0
        s!=n; //before each cycle check if s!=n
        console.log(s=[a]+b) //after each cycle concat a and b into to s and print
    )
        a+=!(b=++b%1e9) //During each cycle set b to (b+1)mod 1e9, if b == 0 and increment a
} //Wrap it all up
Shaun H
quelle
Erklärung bitte.
Bálint
2^64-1ist in Ordnung, ich habe spec geändert.
Erik der Outgolfer
1
Interessanterweise habe ich nicht daran gedacht, nur zwei Zahlen zu verketten, um den Mindestwert zu erreichen. BTW, können Sie eine Menge von Bytes , die durch die Verwendung von zwei Variablen anstelle eines Arrays speichern:n=>{for(a=b="";a+""+b!=n;console.log(a+""+b))++b-1e9||(++a,b=0)}
user81655
Vielen Dank für die @ user81655, mein Gehirn liebt Arrays aus irgendeinem Grund
Shaun H
1
Sie können durch Ändern eines Byte speichern a+""+bzu[a]+b
Bassdrop Cumberwubwubwub
3

GNU bc, 23

n=read()
for(;i++<n;)i

Eingabe von stdin gelesen. bcStandardmäßig werden Zahlen mit willkürlicher Genauigkeit verarbeitet, sodass die maximale Anzahl von 2 ^ 64 kein Problem darstellt.

Digitales Trauma
quelle
3

Eigentlich 1 Byte

R

Langweilig gebaut ist langweilig. Benötigt eine 64-Bit-Version von Python 3 2**64.

Probieren Sie es online!(Aufgrund von Speicher- und Ausgabelängenbeschränkungen kann der Online-Interpreter nicht sehr hoch sein.)

Hier ist eine 5-Byte-Version, die kein 64-Bit-Python 3 erfordert und die die Speichernutzung ein wenig verbessert:

W;DWX

Probieren Sie es online! (siehe oben Vorbehalte)

Mego
quelle
@StewieGriffin Das Problem liegt im adressierbaren RAM, nicht in Ganzzahlgrenzen (Python wechselt nahtlos zwischen nativen Ints und großen Ganzzahlen). Ich habe es sowohl mit 32-Bit-Python 3 als auch mit 64-Bit-Python 3 getestet. 32-Bit schlug fehl, 64-Bit nicht.
Mego
@Mego Ich habe die Grenzwerte geändert, obwohl ich glaube, dass 32-Bit-Python 2 ^ 64-1 nicht unterstützt. Ich denke, dass es bis zu 2 ^ 32-1 unterstützt. Ich empfehle daher, dass letzteres im Python-Fall verwendet wird .
Erik der Outgolfer
Warum rufst du eigentlich ernsthaft an?
Erik der Outgolfer
@ ΈρικΚωνσταντόπουλος Wie ich Stewie bereits erwähnt habe, handelt es sich nicht um 64-Bit-Ints, sondern um Speicheradressen. Aufgrund der ineffizienten Arbeitsspeicherauslastung erschöpfen sie sehr schnell das Speicherlimit von 32-Bit-Prozessen. Und Wirklich und Ernst sind verschiedene Sprachen - Wirklich ist der Nachfolger von Ernst.
Mego
@Mego Oh, ich habe einmal auf einen Link für Actually geklickt und mich direkt mit Seriously verbunden.
Erik der Outgolfer
3

Fuzzy-Octo-Guacamole, 7 Bytes

^!_[+X]

Erläuterung:

^ get input to ToS
! set for loop to ToS
_ pop
[ start for loop
+ increment ToS (which aparently happens to be 0)
X print ToS
] end for loop
Bald Bantha
quelle
Funktioniert auch Xstattdessen o;für 7 Bytes.
26.
Würde das nicht [n] drucken?
Bald Bantha
anstattn
Bald Bantha
Nr. :Druckt den vollen Stapel. Xist neu.
26.
Auch weitere 7 Byte Lösung: ^!$[_;]. $ist Reichweite.
26.
3

Oration, 31 Bytes (nicht konkurrierend)

literally, print range(input())
Żáłģó
quelle
Steht diese Python literally, vor jeder Aussage? (Frage 2: Pre-Dates oder Post-Dates, wenn es Ihre sind? Beide sind akzeptabel, es sei denn, Sie haben dies für diese Herausforderung
getan.
@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Ich glaube, Oration ist von ConorO'Brien. github.com/ConorOBrien-Foxx/Assorted-Programming-Languages/tree/… Auch wenn diese Sprache nach der Herausforderung erfunden wurde (was es nicht war), wäre sie nicht konkurrierend, aber dennoch eine gültige Antwort. Ich bin kein großer Fan der Regel "Ihre Sprache muss der Herausforderung vorausgehen". Ich denke, wenn jemand eine 0- oder 1-Byte-Lösung für eine Herausforderung erfindet, ist das eindeutig gegen die Regeln, aber die Verwendung einer neuen realen Sprache sollte erlaubt sein.
DJMcMayhem
@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ das hat Dr. Green Eggs gesagt. Ich bin eigentlich Easterlyirk's Chatbot.
Żáłģó
Also keine Rezension für dich?
NoOneIsHere
@NoOneIsHere was?
Żáłģó
3

QBASIC, 43 Bytes

1 INPUT a
2 FOR b=1 TO a
3 PRINT b
4 NEXT b
Michelfrancis Bustillos
quelle
Brauchen Sie wirklich INPUT e;aoder INPUT aist genug? Ich sehe dich nicht wiederverwenden e.
Erik der Outgolfer
Guter Punkt, nicht sicher, warum das da war.
Michelfrancis Bustillos
Brauchen Sie auch wirklich die Leerzeichen zwischen Zeilennummer und Buchstaben und dazwischen 1 TO?
Erik der Outgolfer
Ja, das ist notwendig
Michelfrancis Bustillos
Welche Version von QBasic ist das? Können Sie :zwischen Anweisungen anstelle einer Rückgabe und einer Zeilennummer verwenden? Mit QB4.5 kann ich Folgendes tun:INPUT a: FOR b=1 TO a (\n) ?b:NEXT
steenbergh
3

Cubix , 17 Bytes

..U;I0-!@;)wONow!

Probieren Sie es hier aus

Cubix ist eine 2D-Sprache, die von @ETHProductions erstellt wurde, wobei die Befehle in einen Würfel eingeschlossen werden. Dieses Programm bricht wie folgt auf einen Würfel mit einer Kantenlänge von 2 um.

    . .
    U ;
I 0 - ! @ ; ) w
O N o w ! . . .
    . .
    . .
  • I Ruft die Ganzzahleingabe ab
  • 0 Drücke 0 auf den Stapel
  • - subtrahiere die obersten Gegenstände des Stapels
  • !wenn wahrheitsgemäßer Sprung der nächste Befehl @beendet
  • ; Pop das Subtraktionsergebnis vom Stapel
  • ) Inkrementieren Sie die Oberseite des Stapels
  • wBewegen Sie die IP-Adresse nach rechts und fahren Sie fort. Dadurch wird es in die nächste Zeile verschoben
  • O gib den Anfang des Stapels als Zahl aus
  • N Schieben Sie den Zeilenvorschub (10) auf den Stapel
  • o einen Zeilenvorschub ausgeben
  • wBewegen Sie die IP-Adresse nach rechts und fahren Sie fort. Dies bewirkt, dass es zum nächsten Gesicht fällt
  • !weil TOS wahr ist, springe das @terminate
  • ; Ziehen Sie den Zeilenvorschub aus dem Stapel
  • UBiegen Sie nach links auf die -Subtraktion ab und fahren Sie von dort fort
MickyT
quelle
2

Python 2, 37 33 32 33 Bytes

for i in xrange(input()):print-~i

Funktioniert vermutlich bis zu 2**64und darüber hinaus.

Abgeschossen vier Bytes dank @dieter , und eine andere dank @orlp . Wie @ Sp3000 herausfand, kann range()es jedoch anscheinend zu Problemen mit höheren Werten kommen, weshalb die Funktion in geändert wurdexrange() . Hinweis: xrange()Möglicherweise gibt es sogar Probleme, zumindest in 2.7.10 .

user48538
quelle
1
Python 2, um genau zu sein :)
Erik der Outgolfer
33 Bytes ->for i in range(input()):print i+1
Dieter
2
32 Bytes ->for i in range(input()):print-~i
orlp
1
"Funktioniert vermutlich bis zu 2**64und darüber hinaus." - bezweifle es in Python 2, aber es könnte mit xrange(bearbeiten: xrangekönnte sogar Probleme haben, zumindest in 2.7.10)
Sp3000
Wie funktioniert -~Arbeit? Edit : Ich habe es herausgefunden. Auch schöner Trick!
Erik der Outgolfer
2

Zsh, 12 Bytes

echo {1..$1}

Dies funktioniert, weil Variablen vor den geschweiften Klammern erweitert werden.

undlrc
quelle
2
Ich bin mir nicht sicher, ob Sie bis zu 2 ^ 64 zählen können (oder sogar einiges weniger)?
Olivier Dulac
@OlivierDulac 2^64-1ist jetzt in Ordnung.
Erik der Outgolfer
1
Das Maximum von zsh ist2^63 - 1
joeytwiddle
2

V, 11 Bytes

é1@añYpñdd

Da dies unangenehmes UTF-8 und nicht druckbare Dateien enthält, gibt es hier einen umkehrbaren Hexdump:

00000000: e931 4061 f159 7001 f164 64              [email protected]

V ist eine unvollendete Sprache, die ich geschrieben habe, aber dies funktioniert ab Commit 19 . Diese Antwort war etwas ausführlicher als ich es gerne hätte, aber das liegt hauptsächlich daran, dass V keine ganzen Zahlen kennt, sondern nur Strings. Es ist also eine anständige Antwort! Dies wird bis zu 2 ^ 64 funktionieren, aber es wird wahrscheinlich sehr lange dauern lange .

Um das Lesen und Schreiben meiner Erklärung zu vereinfachen, werde ich mit dieser "vom Menschen lesbaren Form" arbeiten.

<A-i>1@a<A-q>Yp<C-a><A-q>dd

Erläuterung:

'Implicit: register "a" == arg 1, and any generated text is printed. 

<A-i>1                       'Insert a single character: "1"
      @a                     ' "a" times, 
        <A-q>       <A-q>    'Repeat the following:
             Yp<C-a>         'Duplicate the line, and increment it
                         dd  'Delete the last line, since we have one too many.

Wenn Lücken erlaubt sind, gibt es eine kürzere Version, die 1 bis n ausgibt, aber auch eine 0 (8 Bytes) ausgibt:

é0@añYp

Und in lesbarer Form:

<A-i>1@a<A-q>Yp<C-a>

Dies ist kürzer, da das <A-q>Ende implizit ist, sodass wir es nicht benötigen, wenn wir die letzte Zeile nicht löschen müssen.

DJMcMayhem
quelle
Es kann so lange dauern, wie es will. Freut mich, eine Antwort für die Arbeit mit 2 ^ 64 zu sehen, insbesondere mit einer unvollendeten Sprache. +1
Erik der Outgolfer
Ich habe das Limit auf 2 ^ 64-1 geändert, da Standard-Lücken jetzt nicht zugelassen sind und ich die Antworten nicht zu sehr herausschneiden möchte.
Erik der Outgolfer