var QUESTION_ID=57552,OVERRIDE_USER=42854;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
yyyy-MM-dd hh:mm:ss UTC
o no importa ese formato de fecha?It's beer o'clock
, pero me resistí.12:32 PM
o12:32PM
? En lugar de12:32p.m.
?Respuestas:
Bash,
3933 bytesSe desperdicia un montón de caracteres porque la especificación requiere
a.m.
op.m.
mientrasdate
salidasam
opm
. ¡Gracias a @DigitalTrauma por guardar 6 bytes!Esto podría no ser muy portátil. Funciona en Ubuntu 15.04.
Una solución que utiliza esencialmente el mismo método en Ruby
, que sorprendentemente tiene la misma longitud:Ruby, 39 bytes
fuente
%P
me da mayúsculas AM o PM. Estoy en una Mac si hace la diferencia.%P
da minúsculas y%p
mayúsculas (que es un poco ... poco intuitivo).date
(en Linux et al.) Y * BSDdate
(donde OSX es una variante BSD) tienen opciones y comportamientos muy diferentes cuando se aventura fuera del conjunto de características especificado por POSIX. Entonces, tal vez esta respuesta debería mencionar específicamente Bash en Linux. (Eso va porsed
demasiado, pero esta invocación particular es firmemente dentro del conjunto de características de seguridad y portátil.)echo -e "It's $(date +%I:%M%P)\b.m."
- en lugar desed
usar retroceso. No me parece una respuesta separada. Además, no tengo ninguna am / pm pero creo que es por la configuración regional.AppleScript, 198
Porque AppleScript. Porque, porque no:
Eso fue doloroso.
fuente
PHP,
3533 bytes¡Usando la herramienta incorrecta para el trabajo!
Simplemente elimina
m
al final deam
opm
, para permitir agregar los puntos. La fecha viene como00:00am
, y contrim
ella se convierte00:00a
.Respuesta anterior (solo PHP 5.4+):
Esto funciona porque puede desreferenciar un valor devuelto por una función. Esto no es posible en PHP5.3 o anterior.
fuente
@
operador y asumir que las personas lo ejecutaránerror_reporting(0)
?Visual Basic 6 / VBA,
4241 bytesUsando
MsgBox
, ya que VB6 no tiene una consola (a menos que intercepte el enlace, enlace como ejecutable de la consola, use algunos hacks de API de Windows y haga otras cosas poco fiables ).fuente
m
por.m.
? es decirDebug.Print Replace(Format(Now,"hh:mm am/pm"),"m",".m.")
R,
68,59626055(Gracias a @ Alex.A. Y @flodel por los comentarios) Toma la hora actual del sistema (
Sys.time()
), la formatea correctamente usando la%I:%M%P
combinación, agrega un punto al final y reemplaza elm
con.m.
.fuente
Julia,
745443 bytes¡Puedes probarlo en línea !
La
time()
función devuelve la hora actual. Cuando se pasa astrftime
con el formato%I:%M%P
, esto da como resultadoHH:MMam/pm
, donde las horas son por un reloj de 12 horas. Hacemos una copia de seguridad de un personaje con\b
para eliminar elm
, dejando un finala
op
, luego, clavamos.m.
al final.Guardado 31 bytes gracias a Glen O!
fuente
print("It's ",strftime("%r%P",time())[[1:5,12]],".m.")
- Se utiliza%P
para agregar las minúsculas am / pm, para evitar la comparación y el comando dividir.time()
)print(strftime("It's %I:%M%P",time())[1:11],".m.")
print(strftime("It's %I:%M%P\b.m.",time()))
Haskell, 135 bytes
Encontré mucho más divertido
main
que son cinco bytes más largos:O 66 bytes en Unix:
fuente
Pyth,
3836 bytes¡Ahorré 2 bytes gracias a @Jakube!
fuente
MATLAB, 59 bytes
Si se le permite tener un espacio en blanco entre la hora y am / pm, entonces podría ser tan bajo como 52 bytes :
fuente
05:38p.m.
\b
así ... Necesitas un espacio extra por cierto.Perl 5.10+,
5862 bytesDebe ejecutarse con el
-M5.010
indicador de línea de comando para obtenersay
.No tomé en cuenta un par de casos extremos en mi solución original (a saber,
00:**
y12:**
); corregido a un costo de 4 bytes adicionales.Cómo funciona
En contexto escalar,
localtime
devuelve una cadena como esta:El campo de minutos ya está rellenado con ceros, lo que ahorra algunos bytes (en el contexto de la lista,
localtime
devuelve números en lugar de cadenas, por lo que debe rellenarlos usted mismo).Aquí no tiene golf:
Perl 5.14+, 57 bytes
(Solo por diversión, ya que estira un poco las reglas).
51 bytes + 6 bytes para
-MPOSIX
. También debe ejecutarse con el-M5.010
indicador de línea de comando para obtenersay
.Esta solución depende de su entorno local, por lo que no funcionará en todos los sistemas. También usa el módulo POSIX, que podría estar ampliando la definición de un "incorporado", a pesar de que es un módulo central.
Se requiere Perl 5.14+ para el
r
modificador no destructivo del operador de sustitución. Una solución equivalente que funciona en 5.10+ es:Esto también es 57 bytes (51 bytes + 6 bytes para
-MPOSIX
).fuente
Perl 5, 74 bytes
Una pequeña muestra de cómo se evalúan las variables de derecha a izquierda.
Usando POSIX: 80 bytes
Uso de POSIX con dependencia de tiempo local y conmutadores: 54 bytes (48 + 6)
Prueba
fuente
-MPOSIX
lugar deuse POSIX;
, soltando los parens en su llamadastrftime
y reemplazándolosprint
consay
(-M5.010
es gratis ). ¡Lo que reduce su última solución a 54 bytes!-MPOSIX
(6 bytes), pero se puede ahorrar 2 bytes dejando caer los paréntesis:$_=strftime"It's %I:%M%P",localtime;
. Eso da 54 bytes en total, que aún es mejor que mi solución POSIX de 57 bytes. ¡Bien hecho!CJam, 40 bytes
Pruébelo en línea en el intérprete de CJam .
Cómo funciona
fuente
Mathematica
49 90 92 9084 bytes-6 bytes gracias al usuario202729
La solución es sencilla, pero un poco prolija, en Mathematica.
fuente
StringReplace
se puede eliminar, guarde 6 bytes.(d=DateString)@{"It's ","Hour12",":","Minute"}<>d@"AMPM"/."AM"->"a.m."/."PM"->"p.m."
T-SQL (2012+),
6765 bytesSQL Server 2012 finalmente nos dio una función de formato razonable para las fechas. Sin embargo, todavía tenía que jugar con AM / PM para obtener el formato correcto.
En versiones anteriores, habría necesitado algo como esto (93 bytes)
fuente
PHP, 49 bytes
Si solo fuera en
am/pm
lugar dea.m./p.m.
...Utilicé muchos bytes desagradables para ahorrar un poco de longitud, así que aquí está el hexadecimal:
Versión legible:
fuente
C,
10394 bytesSin golf
fuente
PHP, 41 bytes
It's <?=strtr(date('g:ia'),['m'=>'.m.']);
La primera vez que jugué esto. No estoy seguro si se supone que debo actualizar / editar la respuesta PHP anterior (49 bytes) o simplemente agregar la mía ...
fuente
[m=>'.m.']
, lo que ahorra 2 bytes. (Las advertencias pueden ignorarse, así que no te preocupes por ellas.)SQL (PostgreSQL),
4241 bytesOtra variante de SQL, sin embargo, esta está en una consulta.
Como nota, pm o am trabaja para obtener la parte am / pm. Las opciones de formato en PostgreSQL son realmente bastante flexibles. Gracias a @manatwork por la sugerencia para mover la
it's
cadena de formato.SQLFiddle
fuente
+ time '12:00'
despuésnow()
de SQLFiddle, debería cambiar am / pm.select to_char(now(),'"It''s" HH:MIa.m.')
CJam, 43 bytes
Tener que rellenar los números con ceros lo hace más grande de lo que me gustaría. Al final, el formato de cadena fue el camino más corto.
Pruébalo en línea .
Explicación
fuente
12:37
que salga00:37
.Javascript, 103 bytes
Javascript ejecutado desde la consola.
C #, 63 bytes
C # ejecutado desde la ventana inmediata.
fuente
d.length
, simplemente puede escribir-n
y calculará desde el final, solo un FYI.d="It's "+new Date().toLocaleTimeString();d.slice(0,-6)+d.slice(-2,-1).toLowerCase()+'.m.'
90 bytes. Y puede guardar un byte moviendo la"It's "
cadena. Y unos pocos bytes de un pequeño atajo de cadena allí.d=new Date().toLocaleTimeString();"It's "+d.slice(0,5)+d[9].toLowerCase()+'.m.'
79 bytes.toLocaleTimeString("en-US")
86 bytes.Bash, 44 caracteres
Pure Bash, solo conchas incorporadas, sin *** utilidades
Ejecución de muestra:
fuente
Powershell, 49 bytes
(date).hour/23
parece funcionar como un índice para"ap"
porque se redondea0
por horas menos de 12 y1
por 12 y más.fuente
"It's $(date -f hh:mm)$("pa"[(date).hour-lt12]).m."
"{0:hh:mm}$("ap"[($d=date).hour/23]).m."-f$d
pierdeIt's
al principio. Si pega eso en el frente, son los mismos 49 bytes que"It's $((date -f hh:mm)+"ap"[(date).hour/23]).m."
date
[datetime]
elencos son siempre en EE . Eso significa que algo como esto"It's $(("{0:h:mmt}"-f[datetime](date)).ToLower()).m."
es posible ... que, concedido, es 54 bytes y más largo que su solución actual, pero sigue siendo una peculiaridad interesante del lenguaje.Depende de la localidad
Para entornos de navegador que tienen la configuración regional establecida
en-CA
o cualquier configuración regional que genera un tiempo de 12 horas de forma predeterminada:CoffeeScript, 81 bytes
JavaScript (ES5), 90 bytes
Independiente de la localidad
CoffeeScript,
11396 bytesAnterior:
Este funciona en todos los entornos de navegador, independientemente de la configuración regional. Requiere Chrome 24+, Firefox 29+, IE 11+, Opera 15+ o cualquier derivado de los mismos. No funciona en Safari. Ver
Intl.DateTimeFormat
.fuente
It's 2:59: m.m.
en-US
Swift -
124102bytesfuente
C, 154 bytes
A diferencia de la otra respuesta C, esta usa el formato correcto "am" / "pm". El otro póster se omitió
#include <time.h>
: si su compilador lo permite, lo reduciremos a 136 bytes. ¿Cuál deberíamos contar?fuente
time.h
. Edición.Moonscript - 56 bytes
Desafortunadamente, la biblioteca estándar de Lua solo implementa% p para mayúsculas AM / PM, por lo que tengo que llamar al método más bajo.
fuente
SpecBAS - 64 bytes
La función incorporada
p$
de la hora devuelve AM o PM, por lo que debe formatearse conREPLACE$
para cambiarla, de modo que se detenga por completo antes / después de esa letra.Luego, la salida de tiempo tuvo que convertirse a minúsculas.
fuente
MATLAB, 66 bytes
Muestra:
fuente
Python 2,
756766 bytesversión anterior, 75 bytes
versión anterior, 75 bytes
fuente
Python 3,
1178779 bytesEsto obtiene las horas y minutos de un reloj de 12 horas usando el formato
%I:%M
, másam
opm
usando%P
. Luego seleccionamos todo menos el últimom
y agregamos.m.
.¡Ahorré algunos bytes gracias a Ruth Franklin!
fuente
datetime
una vez, es 6 bytes más corto de usarfrom datetime import*; h=datetime.now() ...