Вызов
Питер снова поднялся, чтобы спасти нас от повторяющихся испытаний!
Питер Тейлор мертв , и в этом нет никаких сомнений (ну, кроме огромного количества сомнений, которые у нас есть ... но просто игнорируйте это). В его памяти вы должны написать программу, которая определяет, является ли данный пользователь живым или мертвым.
Дальнейшая информация
Пользователь мёртв, если его не видели больше суток, а то и меньше. Проверьте последний увиденный раздел, найденный здесь:
На входе будет идентификатор пользователя (например, у меня 30525, а у Питера Тейлора 194). Предположим, что все входные данные являются действительными идентификаторами PPCG.
Если пользователь жив, вы должны вывести:
[User name] is alive!
Где вы заменяете [Имя пользователя] своим именем пользователя, а не идентификатором пользователя.
Если пользователь мертв, вы должны вывести:
Sadly, [User name] is dead.
Участникам T-SQL, использующим SE Data Explorer , запрещено.
выигрыш
Самая короткая программа в байтах побеждает.
Leaderboard
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>
Ответы:
CJam, 115 байтов
Идея та же, что и в моем ответе на Bash , за исключением того, что в этом ответе не используются регулярные выражения, потому что CJam не имеет регулярных выражений ...
Онлайн-переводчик не выполняет веб-запросы, поэтому он будет работать только из командной строки.
источник
Баш, 151 байт
Как обычно, вывод в STDERR игнорируется .
Пример запуска
идея
Этот код ищет строки,
s="r
которые не имеют>
до его появления. Например:da
, оно содержит словоyesterday
илиdays
(как в2 days ago
).нежить.Имя пользователя извлекается из метатега Twitter. Пример:
источник
Javascript ES6, 234 байта
Аннотированная версия
источник
PowerShell (v4),
228, 217, 209, 157 байт.например
(Извините, Кит Рэндалл, вы были только первым аккаунтом, на котором я обнаружил> 1 день с момента последнего посещения).
Я был доволен надежным и надежным 209-байтовым, вызывающим API, но скрининг экрана - это путь для игры в гольф.
Теперь это извлекает имя пользователя из перенаправленного URI - но это имя, а не числовой идентификатор, как требуется.
И это соответствует строке
Last seen <span title="2015-10-03 13:15:38Z" class="relativetime">2 days ago</span>
сn <... [nr]s ago<
попыткой поймать секунды (с) назад, мин (ы) назад, час (ы) назад и только сейчас, и пропустить «дни недели, месяцы» назад или долгосрочные даты + время. И пытается поймать «последний раз видели», а не другие относительные времена. (Спасибо Деннис).NB.
curl
это псевдоним по умолчанию дляInvoke-WebRequest
, это не стандартная программа curl, портированная на Windows.источник
secs ago
,1 min ago
(нетs
), и я думаю , что я виделjust now
.Р,
384350 байтЭто для тебя, Питер!
Обратите внимание, что это требует
httr
иjsonlite
пакеты , которые будут установлены, хотя они не должны быть импортированы для этого кода на работу , так как мы ссылающиеся пространства имен в явном виде.Ungolfed:
Сохранено 5 байтов на моем предыдущем подходе и исправлена ошибка в моем текущем подходе благодаря minxomat!
источник
"/users/"
в переменную?scan()
будем думать , что последующие строки - это то, что вы хотите ввести из STDIN (кто знает, почему), поэтому в этом случае необходимы точки с запятой. Но в целом ты прав.AutoIt,
320316308 байт_DateDiff
вычисляет разницу в днях ('D'
). Это будет 0, если разница меньше 1 дня, поэтому мы можем использовать его как логическое значение. Тег заголовка «последнего увиденного» значения содержит (почти) стандартную временную метку.источник
PHP, 187 байт
Довольно упрощенный подход, использующий домен codegolf.xyz, только немного отличается от того, что я пытаюсь получить обе переменные одновременно. Протестировано на нескольких пользователях с правильными результатами, пожалуйста, дайте мне знать, если есть какие-то проблемные области!
Использование:
источник
$m[1] is
появляется два раза. Разве не было бы дешевле напечатать это первым и использовать троичный только для мертвой / живой части?Sadly, ...
роль мешала ... Кажется, я не могу понять это!time()-strtotime($m[2])
переменной с одним символом. Тогда эхо$m[1] is
и наконец мертвые / живые. Вот как я это сделал - не знаю, будет ли это работать в PHP :)Groovy, 355 байтов
Несжатый источник
источник