Wyzwanie
Piotr zmartwychwstał, aby ocalić nas przed podwójnymi wyzwaniami!
Peter Taylor nie żyje i nie ma co do tego wątpliwości (cóż, poza ogromną ilością wątpliwości, które mamy ... ale po prostu zignoruj to). W jego pamięci musisz napisać program, który określa, czy dany użytkownik żyje, czy nie żyje.
Dalsza informacja
Użytkownik nie żyje, jeśli nie był widziany przez więcej niż jeden dzień, a nawet krócej niż wtedy, gdy żyli. Sprawdź ostatnio widzianą sekcję tutaj:
Dane wejściowe będą identyfikatorem użytkownika (na przykład mój to 30525, a Peter Taylor ma 194). Załóż, że wszystkie dane wejściowe są prawidłowymi identyfikatorami PPCG.
Jeśli użytkownik żyje, powinieneś wypisać:
[User name] is alive!
Gdzie zamieniasz [Nazwa użytkownika] na nazwę użytkownika, a nie na identyfikator użytkownika.
Jeśli użytkownik nie żyje, powinieneś wypisać:
Sadly, [User name] is dead.
Uczestnicy T-SQL korzystający z SE Data Explorer są niedozwoleni.
Zwycięski
Najkrótszy program w bajtach wygrywa.
Tabela liderów
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>
Odpowiedzi:
CJam, 115 bajtów
Pomysł jest taki sam jak w mojej odpowiedzi Bash , z tym wyjątkiem, że ta odpowiedź nie używa wyrażeń regularnych, ponieważ CJam nie ma wyrażeń regularnych ...
Tłumacz online nie wykonuje żądań internetowych, więc działa to tylko z wiersza poleceń.
źródło
Bash, 151 bajtów
Jak zwykle, dane wyjściowe do STDERR są ignorowane .
Przykładowy przebieg
Pomysł
Ten kod grep dla wierszy zawierających
s="r
, które nie mają>
przed jego wystąpieniem. Na przykład:da
, zawiera on słowoyesterday
lubdays
(jak w2 days ago
).nieumarłyżyje.Nazwa użytkownika jest pobierana z metatagu Twitter. Przykład:
źródło
JavaScript ES6, 234 bajty
Wersja z adnotacjami
źródło
PowerShell (v4),
228 217 209, 157 bajtówna przykład
(Przepraszam, Keith Randall, byłeś tylko pierwszym kontem, które znalazłem z> 1 dniem od ostatniej wizyty).
Byłem zadowolony z solidnego, niezawodnego, 209-bajtowego interfejsu API, ale skrobanie ekranu to sposób na grę w golfa.
Teraz pobiera nazwę użytkownika z przekierowanego identyfikatora URI - ale jest to nazwa, a nie identyfikator numeryczny, zgodnie z wymaganiami.
I odpowiada linii
Last seen <span title="2015-10-03 13:15:38Z" class="relativetime">2 days ago</span>
zn <... [nr]s ago<
próbą złapania sekund (y) temu, minut (y) temu, godzin (y) temu, i właśnie teraz, i tęsknię za „dniami tygodni, miesięcy” temu lub datami długoterminowymi + razy. I próba złapania „ostatnio widzianego”, a nie innych względnych czasów. (Dzięki Dennis).NB.
curl
jest domyślnym aliasem dlaInvoke-WebRequest
, nie jest to standardowy program curl przeniesiony do systemu Windows.źródło
secs ago
,1 min ago
(nies
), a ja myślę widziałemjust now
.R,
384350 bajtówTen jest dla ciebie, Peter!
Pamiętaj, że wymaga to zainstalowania pakietów
httr
ijsonlite
, chociaż nie muszą one być importowane, aby ten kod działał, ponieważ wyraźnie odwołujemy się do przestrzeni nazw.Nie golfowany:
Zapisałem 5 bajtów przy poprzednim podejściu i poprawiłem błąd w moim obecnym podejściu dzięki minxomat!
źródło
"/users/"
do zmiennej?scan()
pomyśli , że kolejne wiersze są tym, co chcesz wprowadzić ze STDIN (kto wie dlaczego), więc w tym przypadku wymagane są średniki. Ale ogólnie masz rację.AutoIt,
320316308 bajtów_DateDiff
oblicza różnicę w dniach ('D'
). Wyniesie 0, jeśli różnica jest mniejsza niż 1 dzień, więc możemy użyć jej jako wartości logicznej. Tag tytułowy wartości „ostatnio widziany” zawiera (prawie) standardowy znacznik czasu.źródło
PHP, 187 bajtów
Dość uproszczone podejście, wykorzystujące domenę codegolf.xyz, tylko nieco inną rzeczą tutaj jest to, że próbuję uzyskać obie zmienne na raz. Testowany na kilku użytkownikach z poprawnymi wynikami, daj mi znać, jeśli są jakieś problemy!
Stosowanie:
źródło
$m[1] is
pojawia się dwa razy. Czy nie byłoby taniej wydrukować to jako pierwsze i użyć trójskładnika tylko dla części martwej / żywej?Sadly, ...
część przeszkadzała ... Nie mogę się tym zająć!time()-strtotime($m[2])
do zmiennej jednoznakowej. Następnie odbij się echem,$m[1] is
a na koniec martwy / żywy. Tak to zrobiłem - nie wiem, czy to zadziała w PHP :)Groovy, 355 bajtów
Nieskompresowane źródło
źródło