Вызов
У вас есть одна строка входных байтов, выведите в ней последний байт.
правила
Ваше представление может быть программой или функцией, выводящей последний байт на входе, который
- является либо аргументом строки, стандартного ввода или командной строки, и
- не пусто.
Я пытался решить эту проблему с помощью мозгового удара, однако все языки могут участвовать. Это код-гольф .
Примеры
"?" -> "?"
"29845812674" -> "4"
Каталог
Фрагмент стека в нижней части этого поста создает каталог из ответов а) в виде списка кратчайшего решения для каждого языка и б) в качестве общей таблицы лидеров.
Чтобы убедиться, что ваш ответ обнаружен, начните его с заголовка, используя следующий шаблон уценки:
## Language Name, N bytes
где N
размер вашего представления. Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Если вы хотите включить в заголовок несколько чисел (например, потому что ваш счет равен сумме двух файлов или вы хотите перечислить штрафы за флаг интерпретатора отдельно), убедитесь, что фактический результат является последним числом в заголовке:
## Perl, 43 + 2 (-p flag) = 45 bytes
Вы также можете сделать имя языка ссылкой, которая затем будет отображаться во фрагменте:
## [><>](https://esolangs.org/wiki/Fish), 121 bytes
/* Configuration */
var QUESTION_ID = 181627; // Obtain this from the url
// It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 8478; // This should be the user ID of the challenge author.
/* App */
var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page;
function answersUrl(index) {
return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}
function commentUrl(index, answers) {
return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER;
}
function getAnswers() {
jQuery.ajax({
url: answersUrl(answer_page++),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
answers.push.apply(answers, data.items);
answers_hash = [];
answer_ids = [];
data.items.forEach(function(a) {
a.comments = [];
var id = +a.share_link.match(/\d+/);
answer_ids.push(id);
answers_hash[id] = a;
});
if (!data.has_more) more_answers = false;
comment_page = 1;
getComments();
}
});
}
function getComments() {
jQuery.ajax({
url: commentUrl(comment_page++, answer_ids),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
data.items.forEach(function(c) {
if (c.owner.user_id === OVERRIDE_USER)
answers_hash[c.post_id].comments.push(c);
});
if (data.has_more) getComments();
else if (more_answers) getAnswers();
else process();
}
});
}
getAnswers();
var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;
var OVERRIDE_REG = /^Override\s*header:\s*/i;
function getAuthorName(a) {
return a.owner.display_name;
}
function process() {
var valid = [];
answers.forEach(function(a) {
var body = a.body;
a.comments.forEach(function(c) {
if(OVERRIDE_REG.test(c.body))
body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>';
});
var match = body.match(SCORE_REG);
if (match)
valid.push({
user: getAuthorName(a),
size: +match[2],
language: match[1],
link: a.share_link,
});
else console.log(body);
});
valid.sort(function (a, b) {
var aB = a.size,
bB = b.size;
return aB - bB
});
var languages = {};
var place = 1;
var lastSize = null;
var lastPlace = 1;
valid.forEach(function (a) {
if (a.size != lastSize)
lastPlace = place;
lastSize = a.size;
++place;
var answer = jQuery("#answer-template").html();
answer = answer.replace("{{PLACE}}", lastPlace + ".")
.replace("{{NAME}}", a.user)
.replace("{{LANGUAGE}}", a.language)
.replace("{{SIZE}}", a.size)
.replace("{{LINK}}", a.link);
answer = jQuery(answer);
jQuery("#answers").append(answer);
var lang = a.language;
lang = jQuery('<a>'+lang+'</a>').text();
languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang, user: a.user, size: a.size, link: a.link};
});
var langs = [];
for (var lang in languages)
if (languages.hasOwnProperty(lang))
langs.push(languages[lang]);
langs.sort(function (a, b) {
if (a.lang_raw.toLowerCase() > b.lang_raw.toLowerCase()) return 1;
if (a.lang_raw.toLowerCase() < b.lang_raw.toLowerCase()) return -1;
return 0;
});
for (var i = 0; i < langs.length; ++i)
{
var language = jQuery("#language-template").html();
var lang = langs[i];
language = language.replace("{{LANGUAGE}}", lang.lang)
.replace("{{NAME}}", lang.user)
.replace("{{SIZE}}", lang.size)
.replace("{{LINK}}", lang.link);
language = jQuery(language);
jQuery("#languages").append(language);
}
}
body {
text-align: left !important;
display: block !important;
}
#answer-list {
padding: 10px;
width: 290px;
float: left;
}
#language-list {
padding: 10px;
width: 500px;
float: left;
}
table thead {
font-weight: bold;
}
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="https://cdn.sstatic.net/Sites/codegolf/all.css?v=ffb5d0584c5f">
<div id="language-list">
<h2>Shortest Solution 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>
<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>
<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>
Ответы:
Атташе , 4 байта
Попробуйте онлайн! (Если на входе может быть список символов,
&/S
может сработать.)альтернативы
5 байтов:
`@&-1
8 байт:
&/S@List
10 байт:
`@«_,-1»
10 байт:
Fold!Right
10 байт:
`@<~_,-1~>
10 байт:
`^^&:Right
10 байт:
{Right^^_}
11 байт:
Get«_,-1»
11 байт:
Get<~_,-1~>
12 байт:
`@«_,#_-1»
12 байт:
`@<~_,#_-1~>
13 байт:
Get«_,#_-1»
13 байт:
Get<~_,#_-1~>
источник
Last
введенного байта. Содержание программы соответствует задачемашинный код x86-16, 2 байта
Как правильно указывает @CodyGray, взятие ввода в виде строки и вывода в регистр удаляет большую часть автономной версии программы.
Входная строка в
SI
, длина вCX
и выходной символ вAL
:Или 4 байта как «строка Паскаля» (длина предшествует началу строки):
Или 5 байтов в виде «строки C» (с нулевым / нулевым завершением), введите в
DI
:машинный код x86-16, IBM PC DOS,
121110 байтИли такая же полная программа, как исполняемый файл IBM PC DOS. Ввод из командной строки, вывод в консоль.
Выход:
источник
SI
, длина вCX
выходном символе вAL
», и тогда я думаю, что единственный необходимый код - этоREPZ LODSB
(2 байта), и мы закончили. Конечно, этот подход не был бы таким, как вы, если бы вы кодировали эффективность, а не размер. Ваша точка зрения очень хорошо принята, но я также опубликую ее как функцию, которая выполняет всю работу.Brainf ***, 7 байт
источник
-1
в качестве EOF.+[>,+]<-.
должен работатьMATL, 2 байта
В MATL используется модульное индексирование на основе 1, поэтому это решение захватывает элемент в
0
-ой позиции ввода, который совпадает с последним, поскольку выполняется0
переход к концу.Попробуйте это в MATL Online
объяснение
источник
J)
...PHP , 13 байт
Попробуйте онлайн!
Запуск с
php -nF
вводом STDIN. Пример:источник
Javascript, 14 байт
источник
[0]
. Или, может быть, если есть короткий способ получить длину массива. Другой подход:a=>[...a].pop()
(15 байтов)Python 3 , 14 байт
Попробуйте онлайн!
источник
e
в заголовке). Для вашего второго вопроса, заголовокe=\
, который в основном означаетe=lambda x:x[-1]
e=\
но Markdown экранирует символ кода, поэтому я должен добавить завершающий пробелBash + coreutils, 8 байт
Ввод от stdin, выход для stdout.
источник
TI-BASIC (TI-84), 10 байтов
Получает последний символ во входной строке.
Вход находится в
Ans
.Выход находится
Ans
и автоматически распечатывается.источник
Haskell ,
94 байтаПопробуйте онлайн!
источник
pure
? Неlast
достаточно?Семя , 11 байт
Попробуйте онлайн!
В результате программа Befunge-98
~2j@,
былаукраденазаимствованы из Джо Кинга здесь , так что кредит им за это.источник
Java 8
Ввод из STDIN, 71 байт
Попробуйте онлайн!
Аргумент функции, 25 байт
источник
s->s[s.length-1]
было бы достаточно сchar[]
параметром-типом.> <> , 2 байта
Использование аргументов командной строки
Попробуйте онлайн!
> <> , 11 байт
Использование stdin
Попробуйте онлайн!
источник
Cubix , 6 байтов
Попробуйте онлайн!
Смотреть это беги
A
Принимает все входные данные/
Перенаправить вокруг кубаpp
довести низ стопки до вершины дваждыo/@
выводить как символ, перенаправить и остановитьисточник
Befunge-93 , 12
15байтПопробуйте онлайн!
Спасибо @Jo King за 3 байта.
Альтернативная 15-байтовая версия, которая менее беспорядочная:
Взять строки в качестве входных данных в Befunge не так просто. Если бы существовала одна команда для ввода нескольких символов, это было бы так же просто, как прочитать строку, вытолкнуть / напечатать верхний символ и выйти.
источник
$$
вместо того,p1
чтобы работать без предупреждения для того же количества байтовМашина Тьюринга, но гораздо хуже , 391 байт
Попробуйте онлайн!
ОБЪЯСНЕНИЕ
источник
Желе , 1 байт
Попробуйте онлайн!
Не самая сложная задача в желе ...
Обратите внимание, что это принимает входные данные в виде строки; если входные данные могут быть интерпретированы иначе (например, число, список), тогда аргумент необходимо будет заключить в кавычки (например, «123456» или «[123,197]»). В качестве альтернативы это можно рассматривать как ссылку, которая принимает байтовый массив и возвращает последний член этого массива в соответствии со стандартными правилами PPCG.
Спасибо @ MilkyWay90 и @ ბიმო за указание на это.
источник
Excel, 10 байт
В значительной степени эквивалентно ответу VBA @ remoel:
источник
Каскад , 9 байт
Очень доволен этим, так как он всего на 3 байта длиннее моей программы для кошек
расширенный
По сути, это просто циклически перемещает входные символы в
a
стек до тех пор, пока не будет достигнут EOF. Затем он выводит элемент вверхуa
стека, используя.a
.Попробуйте онлайн!
источник
PowerShell, 11 байт
Попробуйте онлайн!
источник
SmileBASIC, 16 байтов
источник
05AB1E , 1 байт
Попробуйте онлайн!
θ
или`
будет работать.источник
Веточка, 37 байт
При этом просто используется «извлечение 1 символа из конца и печать его».
Это было действительно легко сделать и проверить, но было весело!
Чтобы использовать его, вы должны поместить его в
.twig
файл и импортировать его:Вы можете проверить это на https://twigfiddle.com/aa19wd (включая тестовые случаи)
источник
Баш, 13 байт
Строка передается в качестве аргумента.
Попробуйте онлайн!
источник
Эмоция , 5 байт
объяснение
Попробуйте онлайн!
источник
VBA (Excel),
1412 байтиспользуя Immediate Window и Cell
A1
качестве входных данныхСпасибо @tsh
?[RIGHT(A1)]
или же?Right([A1],1)
источник
1
необязательным?Python 3,
111834 байтаИспользование через запуск программы в виде скрипта Python в командной строке. Ввод предоставляется в качестве последнего аргумента программы.
Попробуйте онлайн!
источник
IBM / Lotus Notes Formula, 11 байтов
Формула вычисляемого поля, получающая данные из редактируемого поля
i
источник
Машинный код Тьюринга,
7242 байтаПредполагается ввод без пустых ячеек (пробелов). Спасибо только ASCII за сохранение 30 байтов.
Старая версия в 72 байта:
Попробуйте онлайн .
источник
0 * * r 1/1 * * l 2/1 _ _ l halt/2 * _ r 0
?C # 8,0 , 8 байтов
Требуется .NET Core 3.0, который находится в бета-версии. В настоящее время происходит сбой CLR из-за ошибки, но как только ошибка устранена, она будет работать, как ожидается, и соответствовать требованиям вызова.
s=>s[^1]
C # 8.0 , работает без сбоев во время записи, 22 байта
s=>s.ToCharArray()[^1]
C # 8.0 , полная программа, 78 байт
using C=System.Console;class A{static void Main(){C.Write(C.ReadLine()[^1]);}}
источник
array[^n]
есть такой же, какarray[array.Length - n]