У цьому виклику користувачі будуть по черзі виконуючи три досить прості завдання кодування в мовах програмування, які дозволяють поступово старіти.
Перша відповідь повинна використовувати мову програмування, яку було зроблено у 2015 році. Після того, як є хоча б одна відповідь з мови 2015 року, у відповідях можуть використовуватися мови програмування, які були зроблені у 2014 році. Так само відповіді, які використовують мови з 2013 року, забороняються поки не знайдеться хоча б одна відповідь 2014 року.
Як правило, використання мови програмування з року Y не дозволяється, поки відповідь, що використовує мову з року Y + 1, не надіслана. Єдиний виняток - Y = 2015.
Пошук року вашої мови
Щоб відповісти на це запитання, ви повинні знати рік, коли ваша мова програмування була "виготовлена". Це, звичайно, суб'єктивний термін; деякі мови розроблялися протягом декількох років, і багато мов все ще вдосконалюються щороку. Нехай рік, коли "була зроблена мова", буде першим роком, коли впровадження цієї мови з'явилося в широкій громадськості.
Наприклад, Python був "зроблений" у 1991 році , хоча його розробка тривала з 1989 року, а версія 1.0 не вийшла до 1994 року.
Якщо цей рік все ще суб’єктивний, просто використовуйте здоровий глузд, щоб вибрати найбільш підходящий рік. Не занурюйтесь у незначні розбіжності щодо вибору року. Укажіть, будь ласка, посилання на джерело, яке говорить, коли ваша мова була створена.
Різні версії або стандарти мови програмування (наприклад, Python 1, 2, 3) зараховуються як однакова мова з тим самим початковим роком.
Отже, якщо рік вашої мови - 2015, ви можете надіслати свою відповідь лише після того, як буде надіслано відповідь, рік мови якого - рік, що передує вашому.
Якщо справжня відповідь того ж року, що і ваш уже існує, ви можете відповісти. Не має значення, чи була розроблена ваша мова раніше чи пізніше року.
Завдання
Ви повинні виконати Завдання з 1 по 3. Завдання 0 не є обов'язковим.
Ці завдання були більш-менш обрані так, щоб відповідати трьом важливим аспектам програмування: забезпечення результатів (Завдання 1), циклічне завдання (Завдання 2) та рекурсія (Завдання 3).
Завдання 0 - Історія мови (необов’язково)
Напишіть принаймні абзац, що пояснює історію обраної мови програмування: хто її розробив, чому, як і т. Д. Це особливо рекомендується, якщо ви особисто були поруч, коли мова з'явилася, і, можливо, навіть зіграли певну роль у її розвитку. Не соромтеся розповідати особисті анекдоти про вплив мови на вас чи вашу роботу, або щось подібне.
Якщо ви занадто молодий, щоб багато знати про історію своєї мови, не маючи великих досліджень, подумайте, як залишити нотатку старшим користувачам, яка каже, що вони можуть редагувати вашу публікацію та додавати в історію перших рук.
Завдання 1 - "Привіт, світ!" Варіант
Напишіть програму, яка друкує
[language name] was made in [year made]!
до стандартної області виводу вашої мови (stdout для більшості останніх мов).
Наприклад, якби мова була Python, вихід буде таким:
Python was made in 1991!
Завдання 2 - ASCII Art N
Напишіть програму, яка дозволяє користувачеві ввести непарне додатне ціле число (ви можете вважати, що введення завжди дійсне), і виводить ASCII букву N N, зроблену за допомогою символу N
.
Якщо вхід 1, вихід:
N
Якщо вхід 3, вихід:
N N
NNN
N N
Якщо вхід 5, вихід:
N N
NN N
N N N
N NN
N N
Якщо вхід 7, вихід:
N N
NN N
N N N
N N N
N N N
N NN
N N
Шаблон продовжується так. Вихід може містити пробіли.
Завдання 3 - GCD
Напишіть програму, яка дозволяє користувачеві ввести два натуральних числа (ви можете вважати, що введення завжди дійсне), і виводить їх найбільший спільний дільник . Це визначається як найбільше додатне ціле число, яке розділяє обидва числа, не залишаючи залишку. Його можна легко обчислити, використовуючи алгоритм Евкліда .
Приклади:
8
, 12
→ 4
12
, 8
→ 4
3
, 30
→ 3
5689
, 2
→ 1
234
, 876
→6
Ви можете використовувати вбудовану функцію, але спробуйте дізнатися, чи була вона там у першій версії вашої мови. Якщо ні, спробуйте не використовувати його.
Правила
- Ви можете відповісти кілька разів, але кожна нова відповідь повинна використовувати мову, зроблену щонайменше за 5 років до мови у вашій останній відповіді. Тож якщо ви відповіли мовою 2015 року, ви не зможете відповісти знову, поки не будуть дозволені мови 2010 року. Якщо ви почнете з відповіді 2010 року, ви не можете зробити відповідь у 2015 році своєю другою відповіддю, оскільки 2015 рік не до 2010 року.
- Якщо можливо, напишіть свій код так, щоб він працював у першій версії вашої мови (або якомога старшій версії). (Це не є вимогою, оскільки знайти старі компілятори / перекладачі для деяких мов може бути складно.)
- Утримуйтесь від публікації мови, яка вже була опублікована, якщо опублікована відповідь не має суттєвих помилок або у вас зовсім інший спосіб виконання завдань.
- Гольф ваш код добре, але не обов'язково.
- Новий рядок у вихідній програмі будь-якої програми чудово.
- У задачах 2 і 3 всі вхідні значення нижче деякого розумного максимуму, як 2 16, повинні працювати (як мінімум, 256).
- Можливо, ваша мова існувала до того, як це питання було розміщено.
- Дуже старі мови програмування можуть мати різні форми введення та виведення, ніж те, про що ми думаємо сьогодні. Це добре. Виконайте завдання, як можна краще, в контексті вашої мови.
Оцінка балів
Оцінка вашої заявки:
upvotes - downvotes + (2015 - languageYear) / 2
Таким чином, 0,5 додається до підрахунку голосів за кожен рік до 2015 року, надаючи перевагу старішим мовам. Виграє подання з найвищим балом.
Список відповідей
У фрагменті стека нижче перелічені всі дійсні відповіді відповідно до їх мовного року.
Потрібно почати свою публікацію з цього рядка відмітки, щоб переконатися, що вона вказана правильно:
#[year] - [language name]
Наприклад:
#1991 - Python
Назва мови може містити посилання (це буде те саме посилання у списку відповідей):
#1991 - [Python](https://www.python.org/)
Відповіді, які не відповідають цьому формату, або рік, який ще не дозволений, або надходять від користувача, який уже відповів за останні 5 років, позначаються як недійсні.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>$(function(){function e(e,r){var a="https://api.stackexchange.com/2.2/questions/48476/answers?page="+e.toString()+"&pagesize=100&order=asc&sort=creation&site=codegolf&filter=!YOKGPOBC5Yad160RQxGLP0r4rL";$.get(a,r)}function r(e){if(e.items.forEach(function(e){var r=e.link,a=e.owner.display_name,i=e.body.match(/<h1\b[^>]*>(\d{4}) - (.*?)<\/h1>/);if(i&&i.length>=3)var h=parseInt(i[1]),u=i[2];h&&u&&n>=h&&h>=t&&(!d.hasOwnProperty(e.owner.user_id)||d[e.owner.user_id]-h>=p)?(d[e.owner.user_id]=h,h==t&&--t,o.hasOwnProperty(h)||(o[h]=[]),o[h].push({language:u,user:a,link:r,score:e.score+(n-h)/2})):s.push(' <a href="'+r+'">'+a+"</a>")}),e.has_more)runQuery(++a,r);else{for(var i=n,h=[];o.hasOwnProperty(i);){for(var u=$("<tr>").append($("<td>").text(i.toString())),l=$("<td>"),c=$("<td>"),g=$("<td>"),f=0;f<o[i].length;f++){var v=o[i][f];l.append(v.language),c.append($("<a>").html(v.user).attr("href",v.link)),g.append(v.score),f+1<o[i].length&&(l.append("<br><br>"),c.append("<br><br>"),g.append("<br><br>"))}u.append(l).append(c).append(g),h.push(u),--i}$("#answers").find("tbody").append(h),s.length>0?$("#invalid").append(s):$("#invalid").remove()}}var a=1,n=2015,t=n-1,p=5,o={},s=[],d={};e(1,r)})</script><style>html *{font-family: Helvetica, Arial, sans-serif;}table{border: 4px solid #a4a; border-collapse: collapse;}th{background-color: #a4a; color: white; padding: 8px;}td{border: 1px solid #a4a; padding: 8px;}div{font-size: 75%;}</style><table id='answers'> <tr> <th>Year</th> <th>Language</th> <th>User (answer link)</th> <th>Score</th> </tr></table><div id='invalid'><br>Invalid Answers:</div>