¡El 2017 ya casi está aquí!


17

Desafío

El desafío es simple:

No tomando entradas y enviando el siguiente mensaje:

 _     __    __
  |   |  | |   |
  |_  |__| |   | 

Un número de veces igual al número de horas antes o después de la medianoche UTC del 31 de diciembre de 2016.

Ejemplos

Por ejemplo, si son las 19:01 UTC del 31 de diciembre, debe generar:

 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 

si son las 23:24 UTC del 31 de diciembre, debe generar:

 _     __    __
  |   |  | |   |
  |_  |__| |   | 

y si son las 1:42 UTC del 1 de enero, debe generar:

 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 

Aclaración: si son las 10-11pm 31 de diciembre debe enviar dos, 11-12pm 31 de diciembre salida uno, 00-01am 1 de enero salida 1, 01-02am 1 de enero salida dos etc.

Reglas

  • Sin entradas
  • Las líneas o espacios finales están bien.
  • Su programa debería funcionar en cualquier momento o día que lo ejecuto (aunque con una salida grande). Por ejemplo, el 2 de enero a las 00:15 a.m., su código debería salir 25 veces.

(Esta es mi primera pregunta de Code Golf, así que si he dejado algo importante, hágamelo saber).

Este es Code Golf, por lo que ganan los bits más cortos


¿Se redondea el número de horas al entero más cercano? Si es dentro de media hora de la medianoche de Año Nuevo, ¿no debería haber salida?
Greg Martin

@ GregMartin Vea mi edición para aclaraciones.
Spaghettification cuántica

¿Qué debería pasar si ejecuto el programa el 3 de enero?
betseg

@betseg, solo pensé en eso. Ver editar :). Debería funcionar igual aunque la salida sea grande.
Spaghettification cuántica

Buena primera pregunta. Acerca del redondeo: el número de repeticiones es el valor absoluto de la diferencia entre la hora actual UCT y las 0:00:00 del 1 de enero UTC, redondeado. ¿Correcto?
edc65

Respuestas:


6

JavaScript (ES6), 107

Como un método anónimo sin parámetros

Nota 1483228800000esDate.UTC(2017,0)

_=>` _     __    __
  |   |  | |   |
  |_  |__| |   |
`.repeat((Math.abs(new Date-14832288e5)+36e5-1)/36e5)

Prueba Esto se actualiza cada 1 minuto, pero necesitará mucha paciencia para ver el cambio de salida.

F=_=>`_     __    __
 |   |  | |   |
 |_  |__| |   |
`.repeat((Math.abs(new Date-14832288e5)+36e5-1)/36e5)

update=_=>O.textContent=F()

setInterval(update,60000)

update()
<pre id=O></pre>


4

Python 2 - 97 + 17 = 114 bytes

import time
print'_     __    __\n |   |  | |   |\n |_  |__| |   |\n'*int((abs(time.time()-1483228800)+3599)/3600)

Lógica prestada para el techo de la respuesta de edc65 .

Python 3.5 - 116 bytes

import time,math
print('_     __    __\n |   |  | |   |\n |_  |__| |   |\n'*math.ceil(abs(time.time()/3600-412008)))

math.ceildevuelve un entero en 3.xmientras que en 2.xél devuelve un flotador.

Gracias elpedro por guardar 3 bytes.


@ElPedro Gracias. Estaba a punto de hacer eso, en mis soluciones anteriores estaba jugando con lo datetime.now(pytz.utc).timestamp()que requería python 3.5.
Gurupad Mamadapur


2

C compilado con Clang 3.8.1 327 317 145 Bytes

172 bytes guardados gracias a @ edc65

#include <time.h>
t;main(){time(&t);t=abs(difftime(t,1483228800)/3600);while(t--)puts(" _     __    __\n  |   |  | |   |\n  |_  |__| |   |\n");}

Sin golf

#include <time.h>
t;
main()
{
time(&t);

t=difftime(t, 1483228800)/3600;

while(t--)
    puts(" _     __    __\n  |   |  | |   |\n  |_  |__| |   |\n");
}

317 bytes

10 bytes guardados gracias a @ LegionMammal978

#include <time.h>
t,y,w;main() {struct tm n;time(&t);n=*localtime(&t);n.tm_hour=n.tm_min=n.tm_sec=n.tm_mon=0;n.tm_mday=1;w=n.tm_year;if((w&3)==0&&((w % 25)!=0||(w & 15)==0))w=8784;else w=8760;t=(int)difftime(t, mktime(&n))/3600;t=t<w/2?t:w-t;for(;y++<t;)puts(" _     __    __\n  |   |  | |   |\n  |_  |__| |   |\n");

Sin golf

#include <time.h>
t,y,w;
main()
{
    struct tm n;
    time(&t);

    n=*localtime(&t);

    n.tm_hour=n.tm_min=n.tm_sec=n.tm_mon=0;
    n.tm_mday=1;
    w=n.tm_year;

    if((w&3)==0&&((w % 25)!=0||(w & 15)==0))w=8784;else w=8760;

    t=(int)difftime(t, mktime(&n))/3600;
    t=t<w/2?t:w-t; 

    for(;y++<t;)
        puts(" _     __    __\n  |   |  | |   |\n  |_  |__| |   |\n");
}

Agregaré algunas explicaciones cuando pueda.


¿No puedes hacer n.tm_hour=n.tm_min=...=n.tm_mon=0;?
LegionMammal978

@ LegionMammal978 Oh sí, lo olvidé. Gracias.
Wade Tyler
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.