Défi
Peter s'est de nouveau levé pour nous sauver des défis en double!
Peter Taylor est mort , et cela ne fait aucun doute (enfin, à part l'énorme quantité de doute que nous avons ... mais ignorez cela). Dans sa mémoire, vous devez écrire un programme qui détermine si un utilisateur donné est vivant ou mort.
Plus d'informations
Un utilisateur est mort s'il n'a pas été vu depuis plus d'une journée, moins que cela, alors il est vivant. Vérifiez la dernière section vue ici:
L'entrée sera un identifiant d'utilisateur (par exemple, le mien est 30525 et celui de Peter Taylor est 194). Supposons que toutes les entrées sont des ID PPCG valides.
Si l'utilisateur est vivant, vous devez afficher:
[User name] is alive!
Où vous remplacez [Nom d'utilisateur] pour son nom d'utilisateur non leur identifiant d'utilisateur.
Si l'utilisateur est mort, vous devez sortir:
Sadly, [User name] is dead.
Entrants T-SQL utilisant SE Data Explorer ne sont pas autorisés.
Gagnant
Le programme le plus court en octets gagne.
Classement
var QUESTION_ID=59763;OVERRIDE_USER=30525;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>
Réponses:
CJam, 115 octets
L'idée est la même que dans ma réponse Bash , sauf que cette réponse n'utilise pas d'expressions régulières, car CJam n'a pas d'expressions régulières ...
L'interpréteur en ligne n'effectue pas de requêtes Web, cela ne fonctionnera donc qu'à partir de la ligne de commande.
la source
Bash, 151 octets
Comme d'habitude, la sortie vers STDERR est ignorée .
Exemple d'exécution
Idée
Ce code recherche les lignes
s="r
qui n'en contiennent pas>
avant son occurrence. Par exemple:da
, elle contient le motyesterday
oudays
(comme dans2 days ago
).mort-vivant.Le nom de l'utilisateur est extrait d'une balise META Twitter. Exemple:
la source
Javascript ES6, 234 octets
Version annotée
la source
PowerShell (v4),
228 217 209, 157 octetspar exemple
(Désolé, Keith Randall, vous n'étiez que le premier compte que j'ai trouvé avec> 1 jour depuis la dernière date vue).
J'étais content du solide et fiable 209 octets qui appelle l'API, mais le grattage d'écran est la voie à suivre pour le golf.
Cela extrait maintenant le nom d'utilisateur de l'URI redirigé - mais c'est un nom plutôt qu'un ID numérique, comme requis.
Et cela correspond à la ligne
Last seen <span title="2015-10-03 13:15:38Z" class="relativetime">2 days ago</span>
avecn <... [nr]s ago<
essayer d'attraper il y a sec (s), min (s), heure (s), et juste maintenant, et manquer "jours semaines, mois" il y a, ou les dates + heures à long terme. Et essayer d'attraper «dernière vue» et non les autres temps relativet. (Merci Dennis).NB.
curl
est un alias par défaut pourInvoke-WebRequest
, ce n'est pas le programme curl standard porté sur Windows.la source
secs ago
,1 min ago
(nons
), et je pense avoir vujust now
.R,
384350 octetsCelui-ci est pour toi, Peter!
Notez que cela nécessite que les packages
httr
etjsonlite
soient installés, bien qu'ils n'aient pas besoin d'être importés pour que ce code fonctionne, car nous référençons explicitement les espaces de noms.Non golfé:
Sauvegardé 5 octets sur mon approche précédente et corrigé une erreur dans mon approche actuelle grâce à minxomat!
la source
"/users/"
dans une variable?scan()
penserez que les lignes suivantes sont les éléments que vous souhaitez saisir depuis STDIN (qui sait pourquoi), donc les points-virgules sont requis dans ce cas. Mais en général, vous avez raison.AutoIt,
320316308 octets_DateDiff
calcule la différence en jours ('D'
). Ce sera 0 si la différence est inférieure à 1 jour, nous pouvons donc l'utiliser comme valeur booléenne. La balise de titre de la valeur "dernière vue" contient un horodatage (presque) standard.la source
PHP, 187 octets
Approche assez simpliste, utilisant le domaine codegolf.xyz, seul élément légèrement différent ici est que j'essaie d'obtenir les deux variables à la fois. Testé sur quelques utilisateurs avec des résultats corrects, faites-moi savoir s'il y a des problèmes!
Usage:
la source
$m[1] is
apparaît deux fois. Ne serait-il pas moins cher d'imprimer cela en premier et d'utiliser le ternaire juste pour la partie morte / vivante?Sadly, ...
rôle m'a gêné ... Je n'arrive pas à comprendre ce que j'en pense !time()-strtotime($m[2])
à une variable à caractère unique. Puis faites écho$m[1] is
et enfin les morts / vivants. Voilà comment je l'ai fait - ne sais pas si cela fonctionnera en PHP :)Groovy, 355 octets
Source non compressée
la source