¡Cuenta amigos!

30

Introducción

Puede sonar extraño, pero no lo hemos conseguido uno de los desafíos para el recuento de 1a n, ambos inclusive.

Esto no es lo mismo. Ese es un desafío (cerrado) no bien explicado.
Esto no es lo mismo. Esa se trata de contar indefinidamente.

Reto

Escribir un programa o función que imprime cada número entero de 1que nambos inclusive.

Reglas

  • Puedes conseguir de ncualquier manera.
  • Puede suponer que nsiempre será un número entero positivo.
  • Puede ingresar nen cualquier base, pero siempre debe mostrar en decimal.
  • La salida debe estar separada por cualquier carácter (o patrón) que no esté en 0123456789. Se permiten caracteres iniciales o finales no decimales (por ejemplo, cuando se utilizan matrices como [1, 2, 3, 4, 5, 6]).
  • Las lagunas estándar son denegadas.
  • Queremos encontrar el enfoque más corto en cada idioma, no el idioma más corto, por lo que no aceptaré ninguna respuesta.
  • Debe actualizar sus respuestas después de esta edición, las respuestas publicadas antes de la última edición deben cumplir con la regla de cambio sobre las lagunas estándar (no quería negarlas, pero no quería hacer rugir a la comunidad, así que Los negué).
  • Puede usar cualquier versión de idioma posterior a la fecha (o idioma). No puede usar ningún idioma o versión de idioma hecha solo para este desafío.

Bonos

20%

  • Su programa debe poder contar al menos hasta 18446744073709551615( 2^64-1). Por ejemplo, si un nuevo tipo de datos es la única forma de admitir enteros grandes, debe construirlo. Si su idioma no tiene ninguna forma de admitir enteros enormes de hasta 2 ^ 64-1, en su lugar debe admitirse el límite superior de ese idioma en particular.

EDITAR : he cambiado el límite de 2^64a 2^64-1para permitir más respuestas.

EDITAR : convertí la regla 2 ^ 64-1 en un extra, ya que no ha habido mucho interés en este desafío. Si su respuesta admite 2 ^ 64-1, ahora puede editarla para incluir la bonificación. Además, puede publicar una respuesta que no sea compatible, si es más corta.

Erik el Outgolfer
fuente
66
Relacionado.
Martin Ender
"Puedes hacerlo de ncualquier manera". ¿Eso significa que podemos asumir que estamos nguardados en una variable?
flawr
@flawr Puedes conseguir de n cualquier manera. Puede guardarlo en una variable, pero no debe estar codificado.
Erik the Outgolfer
Podría ser útil vincular a los métodos de E / S aceptados
Ephphatha
@Ephphatha Sí, probablemente lo sea, este desafío es de los viejos tiempos en los que yo era un absoluto nuevo.
Erik the Outgolfer

Respuestas:

60

MarioLANG , 29 bytes

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

Pruébalo en línea!

Sé que mi código es tristemente súper triste o enojado:



> :(

Happy MarioLANG, 46 bytes

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

Pruébalo en línea!

Un enfoque más feliz:




 :)

MarioLANG no emocional, 41 bytes

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

Pruébalo en línea!

Erik el Outgolfer
fuente
1
Todavía hay emociones en el último fragmento :!,;)
cookie
1
@cookie En ese caso, puedes ver muchas cosas como un emoticón con algo de fantasía, como =#, o >(, o (-[etc. Además, no tengo idea de por qué, pero aparentemente hay una página de Wikipedia de Lista de emoticones , que no contiene :!ni cualquiera de los que mencioné.
Kevin Cruijssen
19 bytes inspirados en otra pregunta.
Dorian
28

Pyth, 1 byte

S

El cuerpo debe tener al menos 30 caracteres; entraste en 14.

orlp
fuente
2
¿Tu lo dices? ¡Estaba luchando con el título!
Erik the Outgolfer
43
Eso es porque no pudo agregar una explicación. ¿Cómo se supone que debemos entender un código tan complicado sin una explicación?
Luis Mendo
10
Nah Este código está más allá de mi comprensión. Demasiado largo, no puedo entender una estructura lógica tan complicada :-P
Luis Mendo
77
@LuisMendo Lo sé ... orlp debe haber sido un genio para comprender un código tan extenso con una lógica tan avanzada. : P
HyperNeutrino
1
¡Todavía eres el ganador actual!
Erik the Outgolfer
16

Cjam, 5 bytes

{,:)}

Pruébalo en línea!

Este es un bloque sin nombre que espera nen la pila y deja una lista con el rango [1...n].
Funciona simplemente construyendo el rango con ,y luego incrementando cada elemento de rango :)para hacer que el rango se base en uno.

Denker
fuente
99
+1 para una carita sonriente que apareció misteriosamente en el código::)
user48538
1
@ zyabin101 ¡la carita feliz es algo muy común en CJam!
Un Simmons
44
@ASimmons concluyendo que Cjam es feliz?
Erik the Outgolfer
14

Mathematica, 5 bytes

Range

Suficientemente simple.

Un simmons
fuente
33
No es simple cuando tienes que PAGAR para pagar este idioma :(
Erik the Outgolfer
1
@ ΈρικΚωνσταντόπουλος Ahora diría que los ricos lo tienen más fácil, pero lograron superar esta respuesta por 4 bytes;)
Sebb
@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Sé que es mucho tiempo después de tu comentario, pero no pagas para pagar el idioma, pagas por el idioma.
NoOneIsHere
@NoOneIsHere para pagar significa reclamar la propiedad de algo pagando. Creo que quiere decir que hay una suscripción en lugar de un pago único.
Erik el Outgolfer
@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Hay un pago único de ~ $ 150, pero para seguir discutiendo, vamos a chatear .
NoOneIsHere
14

Hexagonía, 19

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

O en el formato de hexágono expandido:

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

Muchas gracias a Martin para básicamente viene con este programa, sólo se jugó golf para caber en un hexágono longitud del lado 3.

Pruébalo en línea!

No tengo los fantásticos programas relacionados con la Hexagonía de Timwi, por lo que esta explicación no será muy colorida. En cambio, puedes leer una gran cantidad de texto. ¿No es lindo?

En cualquier caso, la IP comienza en la esquina superior izquierda, en el $, moviéndose hacia el este si imagina que este programa se colocó con el norte hacia arriba en un mapa. Esto $nos hace omitir la siguiente instrucción, que sería @, que finalizaría el programa. En su lugar, ejecutamos lo ?que establece que el borde de la memoria actual sea el número de entrada. Ahora llegamos al final de la fila, que nos lleva a la fila central del hexágono, aún moviéndonos hacia el este.

La mayor parte del resto del programa es un bucle. Comenzamos con lo .que es un no-op. Luego nos encontramos con una bifurcación en el ... uh ... hexágono ... la <instrucción hace que la IP gire 60 grados a la derecha si el borde de memoria actual es positivo, de lo contrario giramos 60 grados a la izquierda. Como nos estamos moviendo hacia el este, terminamos con nuestro rumbo sur o noreste. Como la entrada es mayor que cero (y, por lo tanto, positiva), siempre comenzamos yendo hacia el sudeste.

Luego golpeamos un >que nos redirige hacia el este; estos operadores solo se bifurcan si golpeas la parte de la bifurcación. Luego golpeamos en la parte inferior derecha. Esto imprime el mod 256 de borde de memoria actual como ASCII. Esto pasa a ser una nueva línea. Golpeamos, lo que nos lleva de vuelta al primer borde que tiene el valor que leemos.' qué cambia qué borde de memoria estamos viendo. Luego tocamos )que incrementa el valor del borde de memoria actual. Como todos los bordes de la memoria comienzan en 0, la primera vez que hacemos esto obtenemos un valor de 1. Luego saltamos a la segunda línea superior y ejecutamos, lo !que imprime nuestro número. Luego nos movemos a otra arista con {y almacenamos el valor ASCII de M multiplicado por 10 más 8 (778). Luego saltamos de regreso a la penúltima línea del hexágono y golpeamos el /. Esto nos lleva a mudarnos al noroeste. Pasamos .por la fila del medio y salimos por la;'/ a movernos hacia el Este nuevamente. Luego tocamos (que disminuye el valor. =hace que volvamos a mirar en la dirección correcta para el salto de borde de memoria futuro.

Ahora, dado que el valor es positivo (a menos que sea cero) volvemos a la parte inferior del hexágono. Aquí golpeamos, .luego saltamos sobre el, ;así que no pasa nada, y volvemos al inicio del ciclo. Cuando el valor es cero, volvemos al comienzo del programa, donde vuelve a ocurrir lo mismo pero ?no encuentra otro número, y tomamos la otra ruta de ramificación. Ese camino es relativamente simple: tocamos lo {que cambia el borde de la memoria, pero ya no nos importa, luego tocamos lo @que finaliza el programa.

FryAmTheEggman
fuente
11

MATL, 1 byte

:

Salida de ejemplo:

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

Pruébalo en línea aquí

Stewie Griffin
fuente
1
¿Como funciona esto? No entiendo cómo funciona esta estructura de código avanzada. :-P
HyperNeutrino
11

GNU Coreutils, 6 bytes

seq $1

respuesta dividida a bash puro, ver más abajo ...

rexkogitans
fuente
1
para mí, la mejor respuesta bash / etc ^^ perfecta relación herramienta-trabajo.
Olivier Dulac
10

R, 13 bytes

cat(1:scan())

El cuerpo debe tener al menos 30 caracteres.

Masclins
fuente
No puedo editar tu respuesta jajaja.
Erik the Outgolfer
@ ΈρικΚωνσταντόπουλος Solo puede sugerir ediciones, que deben aprobarse, con su reputación actual. Y tenga en cuenta que el código de edición no es bienvenido aquí. Si tiene consejos sobre golf, escriba un comentario para que el autor pueda probarlo antes de actualizar la solución.
Denker
@DenkerAffe Quise decir que el botón de edición estaba atenuado antes.
Erik the Outgolfer
1
Lo hago si quiero que lo escriba incluso cuando llamas al guión.
Masclins
99
Pensé que una tomografía computarizada era la más adecuada para ver lesiones óseas, diagnosticar problemas pulmonares y torácicos y detectar cánceres, sin contar.
Stewie Griffin
10

Javascript 182 177 160 154 139 138 132 bytes (válido)

1 byte guardado gracias a @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``)}}

¡Precisión arbitraria al rescate!

Debido a que javascript solo puede contar hasta 2 ^ 53-1 (gracias a @ MartinBüttner por señalarlo), necesitaba crear una precisión arbitraria para hacer esto. Almacena datos en una matriz, y cada "marca" agrega 1 al último elemento, luego pasa por la matriz, y si algo excede 9, establece ese elemento en 0 y agrega 1 al que está en la mano izquierda.

Pruébalo aquí! Nota: presione F12, para ver realmente el resultado, ya que no quería hacerle esperar a los cuadros de texto.

BTW .: Yo era el único, que no sabía, los operadores ternarios son tan útiles en codegolf.

if(statement)executeSomething();

es más largo que

statement?executeSomething():0;

por 1 byte.

Javascript, 28 bytes (inválido - no puede contar hasta 2 64 )

n=>{for(i=0;i++<n;)alert(i)}
Bálint
fuente
2
Sí, eras el único: P
Erik the Outgolfer
¿Puede la versión no válida contar hasta 2 ^ 64-1? Si es así, es válido gracias a las nuevas reglas.
Erik the Outgolfer
@ ΈρικΚωνσταντόπουλος No, solo hasta 2 ^ 53-1
Bálint
Porque si no hay más &&puede ser útil también, solo hay que tener cuidado con la cohesión. condition&&action()
Shaun H
1
e?c.unshift(1):0para e&&c.unshift(1)guardar un byte
Shaun H
9

Java 8, 43/69/94 bytes

Tachado 44 sigue siendo un 44 normal - espera, no lo taché, solo lo reemplacé :(

Si puedo devolver un LongStream: ( 43 bytes)

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

Esta es una lambda para a Function<Long,LongStream>. Técnicamente, debería usar en rangeClosedlugar de range, ya que estoy cortando uno de mi entrada máxima de esta manera, pero rangeClosedes más largo que range.

Si tengo que imprimir en la función: ( 69 bytes)

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

Esta es una lambda para a Consumer<Long>. Técnicamente estoy abusando peek, ya que es una operación intermedia , lo que significa que esta lambda está volviendo técnicamente LongStreamcomo el primer ejemplo; Debería estar usando en su forEachlugar. Nuevamente, el golf no es un buen código.

Por desgracia, ya que long's gama es una firmado entero de 64 bits, que no llega a la solicitada 2^64-1, sino que simplemente2^63-1 .

Sin embargo , Java SE 8 proporciona funcionalidad para tratar longlos mensajes de correo electrónico como si no estuvieran firmados, al llamar Longexplícitamente a métodos específicos de la clase. Desafortunadamente, como Java sigue siendo Java, esto es bastante largo, aunque más corto que la versión BigInteger que reemplaza. ( 94 bytes)

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

Este es un Consumer<Long>, como el anterior.

Y demasiado tiempo para evitar el desplazamiento.

CAD97
fuente
2 ^ 64-1 límite cambiado: D
Erik the Outgolfer
1
¿No debería ser la primera función n->java.util.stream.LongStream.range(1,n+1)?
Mego
2
@ zyabin101>.> no viste nada
CAD97
1
@KevinCruijssen Sería útil, excepto que la razón para usar el BigIntegeres que usar un int(o incluso long) para el iterador no es lo suficientemente grande.
CAD97
1
Estaba equivocado; J8 proporciona métodos para usar longsin firmar, por lo que utilizarlos es más corto que el BigIntegerenfoque. (No habría sido si hubiéramos tenido que implementar nuestro propio tratamiento largo sin firmar como lo había hecho antes de J8.)
CAD97
7

MATLAB, 7 bytes

Una función anónima sin nombre:

@(n)1:n

Correr como:

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

¡Pruébalo aquí!


Si se requiere un programa completo, 17 bytes:

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

¡Pruébalo aquí!

Stewie Griffin
fuente
7

Haskell, 10 bytes

f n=[1..n]

Ejemplo de uso: f 4-> [1,2,3,4].

nimi
fuente
No debe codificar n, debe tomar n.
Erik the Outgolfer
44
@ ΈρικΚωνσταντόπουλος nno está codificado aquí, es un argumento de función. La sintaxis de Haskell puede ser extraña para las personas acostumbradas a la sintaxis tipo C.
Mego
@Mego Oh, estaba confundido con el ejemplo de uso.
Erik the Outgolfer
7

MarioLANG , 19 bytes

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

Pruébalo en línea!

Los programas verticales suelen ser más golfables para bucles simples en MarioLANG. No estoy seguro de lo que hace el intérprete cuando se encuentra [dentro de un elevador, pero parece terminar el programa cuando la celda actual es 0. Ese es probablemente un truco útil en general.

Explicación

MarioLANG es un lenguaje similar a Brainfuck (con una cinta de memoria infinita de enteros de precisión arbitraria) donde el puntero de instrucción se parece a Mario caminando y saltando.

Mario comienza en la esquina superior izquierda y cae hacia abajo. ;lee un número entero de STDIN y lo coloca en la celda de memoria actual. Ahora tenga en cuenta que =es una celda de tierra para que Mario camine, "y #forme un elevador ( #siendo el comienzo) y !hace que Mario se detenga en el elevador para que no se vaya de inmediato. El >y <establece su dirección de movimiento. Podemos ver que esto da un bucle simple, que contiene el siguiente código:

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

Ahora normalmente [, condicionalmente, Mario saltaría el siguiente dependiendo de si la celda actual es cero o no. Es decir, mientras el contador no sea cero, esto no hace nada. Sin embargo, parece que cuando Mario se encuentra un [momento en un elevador y la celda actual es 0, el programa simplemente termina inmediatamente con un error, lo que significa que ni siquiera necesitamos encontrar una manera de redirigirlo correctamente.

Martin Ender
fuente
Termina el programa porque "cae", creo.
Erik the Outgolfer
¿Elegiste 56 también?
Erik the Outgolfer
@ ΈρικΚωνσταντόπουλος Parece que no puedo encontrar ningún lugar al que Mario caiga. Parece que el intérprete acaba con un error justo en el [, lo que en realidad es aún más conveniente.
Martin Ender
TIO tiene una tendencia a no mostrar mensajes de error (STDERR) sin la depuración habilitada. Parece que de hecho es un error.
Erik the Outgolfer
@ ΈρικΚωνσταντόπουλος Sí, y eso es realmente bueno, porque STDERR se ignora a menos que se especifique lo contrario.
Martin Ender
6

Joe - 2 o 6

Si bien puede utilizar la variante inclusiva de la función de rango ...

1R

..¡eso es aburrido! En su lugar, tomemos la suma acumulativa ( \/+) de una tabla de unidades de forma n ( 1~T).

\/+1~T
seequ
fuente
¿Puede proporcionar un enlace al idioma
Downgoat
@Downgoat github.com/JaniM/Joe
seequ
4

Pyth - 3 2 bytes

1 bytes guardados gracias a @DenkerAffe.

Sin usar el incorporado.

hM

Pruébalo en línea .

Maltysen
fuente
hMsi quieres ponerte realmente elegante :)
Denker
@DenkerAffe oh sí, cierto.
Maltysen
Olvidó actualizar su recuento de bytes.
Conor O'Brien el
@ CᴏɴᴏʀO'Bʀɪᴇɴ-.-
Maltysen
@ ΈρικΚωνσταντόπουλος orlp ya hizo la respuesta integrada.
Maltysen
4

dc, 15

?[d1-d1<m]dsmxf

Entrada leída desde stdin. Esto cuenta desde n, empujando una copia de cada número a la pila. La pila se genera como una con el fcomando, por lo que los números se imprimen en el orden ascendente correcto.

Debido a que todos los números se envían a la pila, es muy probable que se quede sin memoria antes de acercarse a 2 ^ 64. Si esto es un problema, entonces podemos hacer esto en su lugar:


dc, 18

?sn0[1+pdln>m]dsmx
Trauma digital
fuente
Tal vez funciona con 2 ^ 64-1 (el nuevo límite).
Erik the Outgolfer
El primero se quedará sin memoria mucho antes de llegar a 2 ^ 64-1. El segundo seguirá feliz hasta que nuestro sol se vuelva supernova
Digital Trauma
@DigitalTraumaskcsockso Quise decir que puedes editar tu segunda respuesta si es más corta para 2 ^ 64-1.
Erik the Outgolfer
@ ΈρικΚωνσταντόπουλος dc, como bc, usa matemática de precisión arbitraria por defecto, y por lo tanto, estos límites son irrelevantes para este lenguaje.
Trauma digital
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

Lo único interesante es usar nx (donde n es el objetivo yx la variable incrementada) para probar el final del ciclo while en lugar de tener una variable dedicada, así que termino teniendo nx y n- (nx) = x en cada ciclo

Nota : Solo puedo contar hasta 2 ^ 31-1. Bueno, supongo que los Terminators no son un verdadero peligro después de todo.

drolex
fuente
3
Por supuesto, hay un lenguaje de programación diseñado alrededor de los memes de Arnold Schwarzenegger ...
Nzall
4

Piet, 64 codeles codelsize 1

Con codelsize 20:

codelsize 20

Npiet traza imágenes

Primer bucle:

tracestart

Rastro restante para n=2:

traza

Notas

  • ¿Aún no responde Piet? ¡Déjame arreglar eso con mi primer programa Piet! Sin embargo, esto podría ser más corto con mejores rollos y menos manipulación del puntero ...

  • El límite superior admitido depende de la implementación del intérprete. Teóricamente sería posible admitir números arbitrariamente grandes con el intérprete correcto.

  • El delímetro es ETX(Ascii 3), sin embargo, esto no se puede mostrar correctamente en esta respuesta, así que los dejaré fuera. Funciona en la consola:

ingrese la descripción de la imagen aquí

Salida

Input:  1
Output: 1

Input:  20
Output: 1234567891011121314151617181920

Input:  100
Output: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100

Undefined behaviour:

Input:  -1
Output: 1

Input:  0
Output: 1

Npiet traza para 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
fuente
¿Tiene bytes nulos entre números?
Erik the Outgolfer
@ ΈρικΚωνσταντόπουλος ¿qué quieres decir? En la consola, puede ver el ETXcarácter (Ascii 3) dividiendo las salidas, aunque el carácter ETX no se puede mostrar en este sitio.
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)}

Toma la entrada ncomo una cadena, debe admitir hasta 9007199254740991999999999

Explicado:

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
fuente
Explicación por favor.
Bálint
2^64-1está bien, he cambiado las especificaciones.
Erik the Outgolfer
1
Interesante, no pensé en simplemente concatenar dos números para alcanzar el valor mínimo. Por cierto, podría guardar muchos bytes utilizando dos variables en lugar de una matriz:n=>{for(a=b="";a+""+b!=n;console.log(a+""+b))++b-1e9||(++a,b=0)}
user81655
Gracias por eso @ user81655, mi cerebro ama las matrices por alguna razón
Shaun H
1
Puede guardar un byte cambiando a+""+ba[a]+b
Bassdrop Cumberwubwubwub
3

GNU bc, 23

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

Entrada leída desde stdin. bcmaneja números de precisión arbitrarios por defecto, por lo que 2 ^ 64 max no es un problema.

Trauma digital
fuente
3

En realidad, 1 byte

R

Aburrido aburrido es aburrido. Requiere una versión de 64 bits de Python 3 para llegar hasta el final 2**64.

Pruébalo en línea! (debido a las restricciones de memoria y longitud de salida, el intérprete en línea no puede ir muy alto).

Aquí hay una versión de 5 bytes que no requiere Python 3 de 64 bits y es un poco mejor en el uso de memoria:

W;DWX

Pruébalo en línea! (ver advertencias anteriores)

Mego
fuente
@StewieGriffin El problema es con la RAM direccionable, no con los límites de enteros (Python realiza transiciones sin problemas entre ints nativos y enteros grandes) Lo probé con Python 3 de 32 bits y Python 3. de 64 bits. 32 bits fallaron, 64 bits no.
Mego
@Mego He cambiado los límites, aunque no creo que Python de 32 bits admita 2 ^ 64-1, creo que admite hasta 2 ^ 32-1, por lo que animo a que este último se use en el caso de Python .
Erik the Outgolfer
¿Por qué llamas en serio en serio?
Erik the Outgolfer
@ ΈρικΚωνσταντόπουλος Como mencioné a Stewie, el problema no son las entradas de 64 bits, sino el direccionamiento de memoria. Debido a lo ineficientes que son en serio y en realidad el uso de la memoria, agotan muy rápidamente el límite de memoria de los procesos de 32 bits. Y en realidad y en serio son idiomas diferentes: en realidad es el sucesor de En serio.
Mego
@Mego Oh, una vez hice clic en un enlace para En realidad y me vinculó directamente a En serio.
Erik the Outgolfer
3

Fuzzy-Octo-Guacamole, 7 bytes

^!_[+X]

Explicación:

^ 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
Bantha calvo
fuente
Además, Xfunciona en lugar de o;, para 7 bytes.
Rɪᴋᴇʀ
¿No sería esa impresión [n]?
Bantha calvo
en lugar den
Bantha calvo
No. :imprime la pila completa. Xes nuevo.
Rɪᴋᴇʀ
Además, otra solución de 7 bytes: ^!$[_;]. $es el rango
Rɪᴋᴇʀ
3

Oración, 31 bytes (no competitivos)

literally, print range(input())
Żáłģó
fuente
¿Está esta pitón literally, delante de cada declaración? (Pregunta 2: ¿Fechas anteriores o posteriores si es suya? Ambas son aceptables a menos que haya hecho esto para este desafío, en cuyo caso es una laguna)
Erik the Outgolfer
@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Creo que Oration es de ConorO'Brien. github.com/ConorOBrien-Foxx/Assorted-Programming-Languages/tree/… Además, si este lenguaje fue inventado después del desafío, (que no fue), no sería competitivo, pero aún así sería una respuesta válida. No soy un gran admirador de la regla "Tu idioma debe ser anterior al desafío". Creo que si alguien inventa una solución de 0 o 1 byte para un desafío, eso está claramente en contra de las reglas, pero debería permitirse el uso de un nuevo lenguaje real.
DJMcMayhem
@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ esto es lo que dijo el Dr. Green Eggs. En realidad soy el chatbot de Easterlyirk.
Junáłģó
¿Así que no hay revisión para ti?
NoOneIsHere
@NoOneIsAquí qué?
Junáłģó
3

QBASIC, 43 bytes

1 INPUT a
2 FOR b=1 TO a
3 PRINT b
4 NEXT b
Michelfrancis Bustillos
fuente
¿Realmente necesitas INPUT e;ao INPUT aes suficiente? No te veo reutilizando e.
Erik the Outgolfer
Buen punto, no estoy seguro de por qué estaba allí.
Michelfrancis Bustillos
Además, ¿realmente necesita los espacios entre el número de línea y las letras y entre 1 TO?
Erik the Outgolfer
Sí, esos son necesarios
Michelfrancis Bustillos
¿Qué versión de QBasic es esta? Puedes usar: entre declaraciones en lugar de una devolución y un número de línea? QB4.5 me permite hacer esto:INPUT a: FOR b=1 TO a (\n) ?b:NEXT
steenbergh
3

Cubix , 17 bytes

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

Pruébalo aquí

Cubix es un lenguaje 2D creado por @ETHProductions donde los comandos se envuelven en un cubo. Este programa se ajusta a un cubo con una longitud de borde de 2 de la siguiente manera.

    . .
    U ;
I 0 - ! @ ; ) w
O N o w ! . . .
    . .
    . .
  • I obtiene la entrada entera
  • 0 empuje 0 a la pila
  • - restar los elementos principales de la pila
  • ! si la verdad salta el siguiente comando @ termina
  • ; pop el resultado de la resta de la pila
  • ) incrementar la parte superior de la pila
  • wmover ip a la derecha y continuar. Esto hace que caiga a la siguiente línea
  • O generar la parte superior de la pila como un número
  • N empujar salto de línea (10) a la pila
  • o dar salida a un salto de línea
  • wmover ip a la derecha y continuar. Esto hace que caiga a la siguiente cara
  • ! porque TOS de verdad, salta el @ final
  • ; Pop el salto de línea de la pila
  • Ugirar a la izquierda en la -resta y reanudar desde allí
MickyT
fuente
2

Python 2, 37 33 32 33 bytes

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

Presumiblemente funciona hasta 2**64y más allá.

Derribó cuatro bytes gracias a @dieter , y otro gracias a @orlp . Pero aparentemente, como descubrió @ Sp3000, range()podría tener problemas con valores más altos, por lo que la función se cambió axrange() . Nota: incluso xrange()podría tener problemas, al menos en 2.7.10 .

usuario48538
fuente
1
Python 2, para ser exactos :)
Erik the Outgolfer
33 bytes ->for i in range(input()):print i+1
dieter
2
32 bytes ->for i in range(input()):print-~i
orlp
1
"Presumiblemente funciona hasta 2**64y más allá". - dudarlo en Python 2, pero podría hacerlo con xrange(editar: incluso xrangepodría tener problemas, al menos en 2.7.10)
Sp3000
Como -~funciona Editar : lo descubrí. Además, buen truco!
Erik the Outgolfer
2

Zsh, 12 bytes

echo {1..$1}

Esto funciona porque las variables se expanden antes de las llaves.

andlrc
fuente
2
No estoy seguro de que pueda contar hasta 2 ^ 64 (o incluso un poco menos).
Olivier Dulac
@OlivierDulac 2^64-1está bien ahora.
Erik the Outgolfer
1
El máximo de zsh es2^63 - 1
joeytwiddle
2

V, 11 bytes

é1@añYpñdd

Como esto contiene UTF-8 desagradable e imprimibles, aquí hay un hexdump reversible:

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

V es un lenguaje inacabado que escribí, pero funciona desde commit 19 . Esta respuesta fue un poco más detallada de lo que me gustaría, pero eso se debe principalmente a que V no tiene conocimiento de enteros, solo cadenas. ¡Entonces es una respuesta decente! Esto va a trabajar hasta 2 ^ 64, pero es probable que tome una muy largo tiempo.

Para hacer que mi explicación sea más fácil de leer / escribir, trabajaré con esta "forma legible por humanos", que en realidad es cómo escribiría esto en vim.

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

Explicación:

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

Si se permiten lagunas, aquí hay una versión más corta que imprime 1 an, pero también imprime un 0 (8 bytes):

é0@añYp

Y en forma legible:

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

Esto es más corto porque <A-q>al final está implícito, por lo que no lo necesitamos si no tenemos que eliminar la última línea.

DJMcMayhem
fuente
Puede tomar todo el tiempo que quiera. Me alegra ver una respuesta para trabajar con 2 ^ 64, especialmente con un lenguaje inacabado. +1
Erik the Outgolfer
He cambiado el límite a 2 ^ 64-1 porque las lagunas estándar no están permitidas ahora, y no quiero recortar demasiado las respuestas.
Erik the Outgolfer