En el menor número de bytes posible, su trabajo es escribir un programa que genere:
3.14
¡En celebración de un día de Pi tardío, por supuesto! :)
Reglas
Puede hacerlo de la forma que desee, pero hay algunas restricciones.
- Es posible que no utilice operaciones aritméticas en cualquier parte de su programa. Esto incluye
+
,-
,*
,/
,%
,^
(exponenciación), etc ... Esto también incluye incrementar (por lo general++
), decremento (--
), operaciones bit a bit , y cualquier construido en funciones que se pueden utilizar como reemplazo tales comosum()
,prod()
,mod()
,double()
,pow()
,sqrt()
,inc()
,dec()
, etc ... (a discreción del autor) - Los dígitos
3
,1
y4
pueden no aparecer en ninguna parte de su código. - Es posible que no se utilice ningún variables / constantes predefinidas que la lengua puede tener como sustituto de
3
,1
y4
. (Discreción del autor) - También es posible que no se utilice ningún funciones trigonométricas tales como
sin()
,cos()
,tan()
,arcsin()
,arccos()
,arctan()
,sinh()
,cosh()
,tanh()
, etc ... (a discreción del autor) - Es posible que no utilice los valores incorporados o predefinido de Pi (o
3.14
). No hay solicitudes web . - Su programa no puede requerir entrada de ningún tipo (además de ejecutarlo).
3.14
es lo único que puede generar, no puede ser parte de una salida más larga / más grande ...
Ganador
La respuesta con la menor cantidad de bytes el 18 de abril gana. ¡Buena suerte!
¡Esperamos respuestas inteligentes de mentes inteligentes! Malbolge a alguien? :PAGS
^
es el operador de exponenciación, no el operador XOR bit a bit.Respuestas:
CJam -
86CJam es un nuevo lenguaje que estoy desarrollando, similar a GolfScript: http://sf.net/p/cjam .
Aquí está la explicación:
S
es una variable preinicializada al espacio ("")`
genera la representación de cadena del último valor, que es exactamente" "
(3 caracteres),
calcula la longitud de la cadena (3) si'.
el carácter de puntoE
es una variable preinicializada a 14; 3, 1 y 4 no están permitidos pero no dice nada sobre 14 :)Créditos al pomo de la puerta por la idea del backtick
fuente
E
.PHP - 22 bytes
¡Pi Day en el año 1998 fue realmente genial!
fuente
n.j
es el formato, y8899e5
es la marca de tiempo de Unix del 14 de marzo de 1998.,8899e5
. Será correcto una vez al año.<?=date('w.W',78e5);
el 1 de abril de 1970 fue un miércoles en la semana 14.C, 39
Asume que la máquina es little-endian y usa el estándar de coma flotante IEEE.
El hecho divertido es que en
"P@I@"
realidad no está relacionadoPI
pero es equivalente a0x40494050
cuál es la representación de3.144550323486328
http://ideone.com/uXVEtl
fuente
cc ,
119 bytesz
Empuje la profundidad de la pila actual (0) sobre la pilaE
Empuje E 16 (== 14 10 )[.]
Empuje la cuerda "."z
Empuje la profundidad actual de la pila (3) sobre la pilan
Pop 3 e imprimir como númeroP
Pop "." e imprimir como charp
Pop 14 e imprima como número con nueva líneaSalida:
fuente
dc
es un idioma e intérprete, al igual que todos los demás idiomas aquí.dc -e
es solo la invocación de ese intérprete. Podría haber guardado con la misma facilidad el programa de 9 bytes en un archivo y ejecutarlodc pi.dc
. Si es necesario contar estos bytes, lo mismo debería aplicarse a todos los demás idiomas. por ejemplo, incluirpython
en todas las entradas de Python oruby golfscript.rb
en todas las entradas de golfscript. Creo que la convención acordada aquí no incluye estos, a menos que se deban aprobar opciones especiales.JavaScript ( ES5 ) 20 bytes
Una variación de la solución JS de m.buettner.
Editar: JavaScript ( ES5 ) 18 bytes
Una variación de la idea de ComFreek de usar la función de decodificación base64.
Editar: Javascript ( ES5 ) 16 bytes
Si el
+
operador unario puede lanzar una cadena a un número, se puede reducir a:fuente
+
acepta el uso de aquí?Haskell, 41 bytes
¿Cuándo es el día pi en Australia?
Editado para agregar: como la otra respuesta de Haskell, que genera una cadena, también tiene comillas. Puedes anotar 33 y estar estrictamente dentro de las reglas, pero es menos divertido:
fuente
p=[2.9,2.92..]!!([0,6..]!!2)
... y en esta se..
ve mal. Pero Haskell está fuertemente tipado, y el incremento en la respuesta que di es deChar
noNum
y no es aritmético, lo que en realidad está prohibido. Necesitaría unfromEnum
para convertir los caracteres a números para usarlos de esa manera. De todos modos, mi conciencia está limpia :)Código Morse, 33 bytes
Técnicamente hablando, la información solo toma 21 bytes.
fuente
J -
151110 charLo hizo más corto, usando lo fantástico
i:
.Explicado:
6.28j8
- El número complejo 6.28 + 8i.i:
- Aquí es donde sucede la magia.i:
en un número complejo A + Bi, B ≠ 0 toma B + 1 puntos igualmente espaciados del intervalo [-A, A].6{
- Tome el elemento en el índice 6, que resulta ser 3.14.Anteriormente, teníamos las siguientes tonterías:
Explicado por explosión:
fuente
|.'.'2}":22b8d5
, puede guardar 2 caracteres seleccionando un número que no requiere inversión:'.'1}":16bbc6
41X3
porque sólo se me permite modificar los caracteres en los índices 0 y 2.Línea de comando de Linux, 35 bytes
Este no está cerca de ganar, pero aquí es por diversión:
Salida (después de 2 segundos):
fuente
:;ping -t${#?} -qc2 67502862|grep -oP '.\..\d'
. Esto establece el TTL en 1, por lo que el router saldrá del eco ICMP saliente antes de que se acerque a Internetping -w2 67502862
. (Edición de Ninja porque antes de avisar a w1, casi rompí las reglas)GolfScript,
181312Versión antigua:
¡Es muy artístico, solo 3 personajes únicos! ;)
Cómo funciona:
Aquí hay una explicación de la versión de 12 caracteres (mucho más interesante, IMO):
Funciona porque
n`,
es4
, comon`
es'"\n"'
. La misma lógica para'.'`,
. También cambia en lugar de crear una nueva cadena para guardar un carácter (gracias @algorithmshark).Versión alternativa:
o
O cualquier cosa en esas cuerdas, de verdad. :PAGS
fuente
'.'.`,\.,n`,
Trabajaría para salvar un char? Reutilizando el'.'
duplicando e intercambiando.La respuesta de OP.
Mathematica,
212018Esto se siente barato ...
o
Descubrí cómo hacerlo 18:
Haskell,
494812(48 incluye el nuevo carácter de línea)
Ejecútelo llamando a la
r
función.Usando el método como con Mathematica anterior, puede escribir esto en GHCi:
Java,
8786Scala, 27
Traducido de Java según lo sugerido por Score_Under . (Realmente no sé Scala)
fuente
0xe
es inteligente ¿Te importa si mejoro mi respuesta JS con eso? ;)[-.86:5][5]
en 11, pero pensé que no contaba ya que los rangos son solo matemáticas.Bash, 50
Los mensajes de ayuda / error no son recursos externos, ¡son la salida de un comando!
Si algo es abuso de reglas, esto es todo. Utiliza la coincidencia que el mensaje de ayuda dado
STDERR
por el comando exactotiene 314 caracteres de longitud (al menos en Ubuntu 13.10 con
iputils-121221
). EDITAR: aprecio que esto sea mucho menos portátil de lo que esperaba ...La primera línea toma la longitud del carácter del mensaje de ayuda y la almacena en una variable.
Como en mis otras respuestas, las siguientes líneas obtienen el número 1 tomando el estado de salida de
false
(no muy portátil pero esto es código-golf después de todo!), Luego use ese valor para insertar un punto decimal en la última líneaSalida:
3.14
fuente
info ping6
tengo iputils-121221chmod
respuesta abusiva a esta pregunta en codegolf.stackexchange.com/a/25724/16402ping6|&wc -c|sed 's/./&./'
Bash + TeX 28 bytes
Si tiene instalado TeX:
El número de versión de TeX asintóticamente se acerca a pi a medida que el software mejora. Entonces, a medida que pasa el tiempo, ¡puede usar esta implementación (no conforme) para imprimir más y más dígitos!
Esto imprimió 3.1415926 en 2011; a partir de enero de 2014, imprimirá 3.14159265.
fuente
tex -v|grep -oP '.\..\d'
para guardar 4 bytes. (Regex robado de la respuesta de DigitalTrauma .) De todos modos, +1 porque solo pensé en la misma respuesta.JavaScript, 20 bytes
Úselo en una consola, para que el resultado se imprima directamente. De lo contrario,
alert(...)
agregará otros 7 caracteres.Al igual que mi otra respuesta, me di cuenta de que es mucho más corto en JS.
La idea de usar
0xe
para 14 se toma de la presentación del OP con el amable permiso del OP.fuente
(x='.'+0xE).length+x
Fecha GNU, 17 bytes
Este solo garantiza que funcione este año, pero no veo ninguna limitación en las reglas sobre esto ;-)
El
+
es simplemente indica el inicio del especificador de formato paradate
y no es una suma aritmética. Lo mismo con el-
, que indica la fecha de entrada.Salida:
fuente
only guaranteed to work this year
Está bien .. :)Bash, 17 bytes
Guión, 41 bytes
fuente
Golpe
2322Shell (sin expansión de historial) 20
fuente
seq 2 .06 5|sed -n 20p
También funciona como se indica en la respuesta de Mathematica de OP.sed 58!d
Es un poco más corto.!d
condpkg ...
los que comencé el último comando que ejecutéd
. Funciona bienksh
perozsh
dicezsh: event not found: d
que eso definitivamente está siendo sustituido por algo.pi.sh
y lo ejecutabash pi.sh
, funcionará bien.Python, 39 o 28
47 o 34(Gracias Score_Under por jugar tanto golf)
+
Aquí está el operador de concatenación de cadenas, no la suma.Copiando el
0xe
truco del OP, aquí hay 28 caracteres con la ayuda de @psalVersiones antiguas:
fuente
print"%s.%s"%(len('aaa'),0xe)
a 29 bytes. También puede hacer lo mismo con el primero:print"%s.%s%c"%(len('aaa'),len('a'),52)
a 39 bytes.%s
aún requierestr
. Gracias por el consejo :)print('%s,%s'%(0xE9,0xE))[2:]
print('%X.%s'%(675,0xE))[2:]
GolfScript, 8 bytes
Este programa contiene caracteres ASCII no imprimibles, por lo que no se puede pegar directamente aquí. En cambio, los signos de interrogación en el código anterior deben reemplazarse con los bytes
03
y0E
en hexadecimal.Por conveniencia, aquí hay un volcado hexadecimal del programa real. Los usuarios de Unix / Linux pueden ejecutar este volcado hexadecimal
xxd -r
para reconstruir el programa:Explicación:
Los primeros cinco bytes del programa forman un literal de cadena entre comillas simples que codifica los tres caracteres con los códigos ASCII 3, 14 y 46 (= período ASCII).
(
corta el primer carácter de la cadena y empuja su código ASCII (3) en la pila.\
intercambia los dos primeros elementos de la pila, tirando de la cuerda hacia arriba y el segundo(
corta otro carácter de la cadena, empujando nuevamente su código ASCII (14) en la pila.Al final del programa, la pila (excluyendo la cadena de entrada vacía) se ve así:
Al final del programa, el comportamiento predeterminado del intérprete de GolfScript es stringificar e imprimir todo en la pila, produciendo el resultado deseado.
fuente
bash - 39
Todos sabemos que los primeros dígitos de Pi pueden calcularse a partir de la siguiente declaración:
Necesitamos solo 2 decimales, ¿verdad?
fuente
Mathematica - 78
fuente
Perl,
1520 bytesfuente
tr + Bash, 17 bytes
Los
-
caracteres aquí no son operadores de sustracción aritmética. Indican rango.Salida:
fuente
write()
llamada o similar. Necesariamente habrá algo de aritmética debajo de las cubiertas para asegurar que se escriba el número correcto de bytes, si no hay otro lugar. Creo que el punto de la pregunta es ocultar los cálculos aritméticos / bit a bit necesarios.BASH, 57
Esto es más largo que la mayoría de las respuestas, pero no hay nada malo en intentarlo.
da
fuente
c=wc\ -c;echo `$c<<<..`.`$c<<<''``$c<<<...`
C, 36
fuente
main(){printf("%d\b.%d",' ',0xe);}
JavaScript: 23 bytes
Gracias a nderscore (ver sus comentarios)!
fuente
4
embargo, contiene ;)btoa()
Funcionaría para llegar de3.14
alguna manera?atob('Mw')+atob('LjE0')
y versión "ilegal" de 14 bytes:atob("My4xNA")
C#
ĺ es el carácter 314, no una variable o constante predefinida. .ToString formatea la salida en un dígito, un punto y luego 2 dígitos más.
fuente
GolfScript,
1310¡Gracias a Ilmari Karonen por la versión mejorada!
x
yy
son caracteres no imprimibles (consulte http://www.asciitable.com/ para obtener más información), respectivamenteETX
SO
, y que decodifican a 3 y 14.Lo que hace este código debería ser bastante claro.
Nota: la siguiente regla
You may not use any predefined variables/constants that your language may have as a replacement for 3, 1, and 4. (Author's discretion)
no está roto, ya que los caracteres ASCII no son variables ni constantes.
fuente
The digits 3, 1, and 4 may not appear anywhere in your code.
,Your program cannot require input of any kind (besides running it).
{}.*.{}.*
, y dentro de los corchetes hay 2 caracteres no imprimibles, respectivamente ( asciitable.com )ETX
ySO
{xy}.*'.'\
(10 caracteres). Sin embargo, el mío aún es más corto. ;-) Pero +1 por enseñarme sobre{ }.*
(y{ }.%
), tendré que tener ese truco en mente.Nuevo en el sitio y todavía no puedo escribir comentarios, así que lo publicaré aquí. Solo me pregunto acerca de esta solución Javascript:
y esta regla:
3.14 es lo único que puede generar, no puede ser parte de un resultado más largo / más grande.
Si ejecuto este código en la consola de mi navegador, obtengo:
o usando Nodo en la línea de comando:
pero si ejecuto este código:
Yo obtengo:
Usando Node.js para ejecutar un archivo .js, puedo escribir:
y obten:
fuente
console
tiende a encerrar cadenas entre comillas al mostrarlas ... Ha utilizado+
pero no aritméticamente, se está utilizando como un concatenador, por lo que es válido ... También podrías haber hecho esto más pequeño usando enalert
lugar deconsole.log
... Pero por lo demás, un gran esfuerzo. Esperamos que te guste aquí ...Mathematica, 56 bytes
No hay mucho que decir. Estoy generando los dígitos como longitudes de cadena y los concateno.
fuente