Виклик
Враховуючи рядок як вхід, гольф запускає програму Фур'є, яка виводить її.
У Фур'є немає простого способу вивести рядок: вам потрібно пройти кожен код символів і вивести його як символ.
Фур’є
Мова заснована на акумуляторі, глобальній змінній, яка ініціалізується на 0 на початку програми. Цим використовується майже кожен оператор мовою. Тільки деякі не змінюють значення акумулятора.
Персонаж виходить
a
Приймає значення акумулятора як ASCII-код і видає символ. Не змінює значення акумулятора.
Якщо акумулятор більше 255, програма поверне помилку. Аналогічно, якщо акумулятор менше 0.
Нумерація
o
Виводить значення акумулятора. Не змінює значення акумулятора.
Збільшити
^
Збільшити акумулятор на одиницю.
Зменшити
v
Зменшіть акумулятор на один.
Додайте
+x
Встановлює акумулятор на значення акумулятора плюс значення x.
Відняти
-x
Встановлює акумулятор на значення акумулятора мінус значення х.
Помножте
*x
Встановлює акумулятор на значення акумулятора, помножене на значення x.
Розділити
/x
Встановлює акумулятор на значення акумулятора, поділене на значення x. (Зверніть увагу, що це ціле ділення, тому це 1/6
призводить до 0
)
Номер
n
Встановіть акумулятор на ціле число n.
Примітка
Тут x
і n
може бути будь-яким цілим числом від 0
до 2^32-1
включно.
Більше інформації
Потрібно використовувати лише описані вище оператори. Тому ваша програма Fourier, що виводиться, є недійсною, якщо вона використовує будь-яке з наведеного нижче (зауважте, що для винагороди дозволені наступні оператори):
- Повторіть петлі
- Якщо заяви
- Змінні
- Випадкові
- Модуло
- Введення користувача
- Більш / менше, ніж оператори
- Оператори рівності
- Очистити екран
- Затримка в часі
- Функції дати
Ваша програма може бути або повною програмою, або функцією, приймаючи вхід через STDIN, аргумент файлу або функції. Ви також можете взяти дані безпосередньо з Інтернету.
Зауважте, що якщо vv
у вашому коді є, його слід замінити на -2
. Те саме стосується ^^
, замінивши його на +2
.
Приклади
Якщо вхід є 7n
, то очікувана програма:
55a110a
Але ви можете зберегти один байт за допомогою
55a*2a
Інший спосіб
7o110a
Використання номера з виходу.
Аналогічно, якщо вхід є Hello
, тоді очікувана програма:
72a101a108a108a111a
Ви можете грати в гольф на 3 байти (оскільки вихід не змінює акумулятор):
72a101a108aa111a
Але зачекайте, ми можемо використовувати оператор додавання, економлячи 2 байти:
72a101a+7aa+3a
Форматування
Оскільки я використовую таблицю лідерів фрагментів стека Мартіна Бюттнера, будь ласка, ви можете відформатувати назву так:
# <Language name>, <length of total output> bytes
Потім ви можете помістити все, що завгодно, нижче заголовка.
Перемога
Ви повинні розмістити тривалість програм Фур'є (створені вашим кодом), щоб вивести цей текстовий файл і цей текстовий файл . Ваш бал - це комбінована довжина обох програм Фур'є в байтах (символи, що не містять ASCII, у Фур’є не використовуються, тому це насправді не має значення).
Перемагає людина з найнижчою кількістю балів. Якщо є нічия, виграє найкоротша програма в байтах.
Баунті
Ця нагорода на 500 представників - це нова відповідь, в якій гольфуються струни, використовуючи будь-яку з функцій Фур'є. Це включає в себе змінні, цикли та якщо заяви тощо. Ця нова відповідь не буде прийнята.
Таблиця лідерів
Дивіться розділ форматування вище:
var QUESTION_ID=55384;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 getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function shouldHaveHeading(e){var a=!1,r=e.body_markdown.split("\n");try{a|=/^#/.test(e.body_markdown),a|=["-","="].indexOf(r[1][0])>-1,a&=LANGUAGE_REG.test(e.body_markdown)}catch(n){}return a}function shouldHaveScore(e){var a=!1;try{a|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(r){}return a}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading),answers.sort(function(e,a){var r=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0],n=+(a.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0];return r-n});var e={},a=1,r=null,n=1;answers.forEach(function(s){var t=s.body_markdown.split("\n")[0],o=jQuery("#answer-template").html(),l=(t.match(NUMBER_REG)[0],(t.match(SIZE_REG)||[0])[0]),c=t.match(LANGUAGE_REG)[1],i=getAuthorName(s);l!=r&&(n=a),r=l,++a,o=o.replace("{{PLACE}}",n+".").replace("{{NAME}}",i).replace("{{LANGUAGE}}",c).replace("{{SIZE}}",l).replace("{{LINK}}",s.share_link),o=jQuery(o),jQuery("#answers").append(o),e[c]=e[c]||{lang:c,user:i,size:l,link:s.share_link}});var s=[];for(var t in e)e.hasOwnProperty(t)&&s.push(e[t]);s.sort(function(e,a){return e.lang>a.lang?1:e.lang<a.lang?-1:0});for(var o=0;o<s.length;++o){var l=jQuery("#language-template").html(),t=s[o];l=l.replace("{{LANGUAGE}}",t.lang).replace("{{NAME}}",t.user).replace("{{SIZE}}",t.size).replace("{{LINK}}",t.link),l=jQuery(l),jQuery("#languages").append(l)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/,NUMBER_REG=/\d+/,LANGUAGE_REG=/^#*\s*([^,]+)/;
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> <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>