Al recibir el mes y el año en formato AAAAMM, genere la salida del mes calendario correspondiente para ese año.
Por ejemplo, la entrada 201312
debe generar la siguiente salida:
Mo Tu We Th Fr Sa Su
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
El único truco es, NO hay funciones nativas generadoras de calendario ... así que clones de Linux, no hay función "cal" ... ¡Muahahahahah!
PD: El calendario debe comenzar con el lunes como el día más a la izquierda, esto es para asegurarse de que la salida sea como la función "cal", pero no salga como "cal", que tiene el domingo como su día más a la izquierda. ..
El tamaño de código más pequeño gana.
Respuestas:
Python 2.7 - 152
Desafortunadamente falla para septiembre de 1752 . Por supuesto, importa todas las funciones del calendario, pero solo usa 1, y eso solo devuelve el día de inicio de la semana y el número de días.
Código relativamente estándar, pero este es mi bit favorito:
Imprime la nueva línea usando la multiplicación de cadenas, si el número del día actual y el día de inicio de la semana es domingo (por ejemplo, 7) ya que el booleano se convierte en un entero.
Esto ahorra un personaje en el más intuitivo
x%7==0
al usar en sux%7<1
lugar.Prueba de salida:
fuente
52.times
haciendo? ¿No es multiplicación?n.times{...}
es idéntico a(0...n).each{...}
o0.upto(n-1){...}
. La multiplicación sería52 * ...
Rubí,
170168 caracteresCorrección de error: no requería que la biblioteca necesaria (+16) usara el módulo de fecha juliana 7 en lugar del día de la semana actual directamente (-3)
usado / 100 y% 100 para analizar la fecha en lugar de expresiones regulares (-13). Tomado de la respuesta de LegoStormtroopr.
eliminado los paréntesis alrededor del argumento para
rjust
yDate.new
(-2)fuente
"#{l[i].to_s.rjust 2} #{?\n if i%7>5}"
con el"%2s %s"%[l[i],i%7>5?$/:""]
.Mathematica 203
Pruebas
fuente
SmileBASIC, 204 bytes
Wow, ese detector de año bisiesto es MUY largo ...
fuente
JavaScript (239)
Salida:
fuente
PHP,
153147 bytesDescompostura
fuente
C (gcc) , 242 bytes
No es la solución más elegante, sospecho.
Ingrese en forma de un entero con los cuatro dígitos altos que forman el año, y los dos dígitos bajos del mes.
Pruébalo en línea!
fuente
(13*m+4)/5+y%X*5/4-7*y/X/4
lugar de1+(26*m-2)/10-2*y/X+5*(y%X)/4+y/X/4