Декатлон гольфу першого коду [закрито]


48

Завдання

Усі учасники змагань намагаються вирішити наступний список із 10 завдань:

  1. Прочитайте додатне ціле число n із введення та поверніть суму кубів перших n негативних чисел.

    Для введення 1це має повернутися 0.

  2. Прочитайте додаткове ціле число n із вхідних даних і поверніть триєдне значення тоді і тільки тоді, коли n є простим рівнем Мерсена .

  3. Прочитайте із введення непустий список із n цілих чисел та поверніть їх медіану .

    Якщо n є парним, використовуйте менші з двох середніх значень.

    Наприклад, медіана [1 4 3 2]є 2.

  4. Прочитайте ціле число (позитивне, від'ємне або 0) або подання рядка в базі 10 або одинарне з введення та повертайте його цифри в негабінарних , без провідних нулів (за винятком введення 0).

    Вихід може бути відформатований будь-яким зручним способом (цифри, масив, рядок тощо).

  1. Повернення pneumonoultramicroscopicsilicovolcanoconiosis.

  2. Перевірте поточну дату та поверніть, Happy New Year!якщо це доречно, згідно григоріанського календаря.

  3. Псевдо випадковим чином виберіть 64 унікальні присвоєні кодові точки з блоку Unicode CJK Unified Ideographs Extension-A (U + 3400 - U + 4DB5) і поверніть рядок відповідних символів.

    Усі можливі рядки повинні мати однакову ймовірність вибору.

  4. Прочитайте два рядки друкованих символів ASCII з введення та поверніть триєдине значення тоді і лише тоді, коли символ першого рядка утворює підпорядкування другого рядка.

    Наприклад, abc, axbxcповинен повертати truthy і bac, axbxcповинен повернутися falsy.

  1. Прочитайте багатомірний, прямокутний масив цілих чисел і ціле число n із введення та поверніть модифікований масив з усіма цілими числами, помноженими на n .

  1. Прочитайте невід'ємне ціле число n із введення та поверніть ланцюжок із n вагонів поїздів, як показано нижче.

    Приклад виводу для n = 3 :

     ______   ______   ______ 
    |      | |      | |      |
     ()--() ~ ()--() ~ ()--()
    

    Вихід може бути оточений будь-якою кількістю пробілів, поки це виглядає в прикладі.

Роз'яснення

  • 0 не є ні позитивним, ні негативним.

  • Пробіл пробілів завжди дозволений у висновку.

  • Кілька фрагментів вводу можуть бути прочитані в будь-якому послідовному зручному порядку.

Правила

  1. Жодна відповідь не може вирішити дві різні задачі в одній мові програмування. 1

  2. Для кожного окремого завдання застосовуються стандартні правила .

    Зокрема, ви можете надсилати програми або функції зі звичайними за замовчуванням вводу / виводу , але не можете скористатися цими лазівками .

    Завдання 5 - це, по суті, , тому жорстке кодування результатів не тільки дозволено, але й очікується.

  3. Потрібно розміщувати лише одну відповідь на кожного користувача, що містить щонайменше одне рішення для кожної із задач.

    Будь ласка, відформатуйте свою відповідь як у наступному прикладі:

    ## Task 1, Python, 42 bytes
    
        <code goes here>
    
    Explanation, I/O, required Python version, etc. go here.
    
    ---
    
    ## Task 7, C, 42 bytes
    
        <code goes here>
    
    Explanation, I/O, required compiler (flags), etc. go here.
    

Оцінка балів

  1. За кожне завдання, яке ви вирішите, ви отримуєте один бал.

    Це означає, що вам не доведеться вирішувати всі завдання для участі.

  2. Якщо ваше рішення для задачі n є найкоротшим у цій мові програмування, ви отримуєте додатковий бал.

  3. Якщо ваше рішення для задачі n є найкоротшим з усіх мов програмування, ви отримуєте додатковий бал.

  4. Бонусні бали будуть присуджуватися лише один раз за кожну комбінацію мови та завдання відповідно.

    Як звичайно, якщо два рішення мають однаковий підрахунок байтів, час проводки - це вимикач зв'язку.

    Якщо хтось перевершить вас пізніше, ви втрачаєте бонусний бал, який отримує інший відповідач.

  5. Ви можете подати гольф, додати / видалити мови зі своєї відповіді або поміняти мови, які використовуються для двох завдань.

    Кожен раз, коли хтось редагує його відповідь, всі відповіді відновлюються.

  6. Після зміни мови для завдання ви втрачаєте вислугу років. 2

Відповідь з найвищим балом виграє. 3

Таблиця лідерів за завданнями

<style>body{text-align:left!important}#answer-list{padding:10px;width:290px;float:left}#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}</style><script src=https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js></script><link rel=stylesheet href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id=answer-list><table class=answer-list><thead><tr><td>Task<td>Author<td>Language<td>Score<tbody id=answers></table></div><table style=display:none><tbody id=answer-template><tr><td>{{TASK}}<td>{{NAME}}<td>{{LANGUAGE}}<td>{{SIZE}}</table><script>function answersUrl(e){return"https://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 process(){answers.forEach(function(e){var s=e.body_markdown.split("\n").filter(function(e){return"#"==e[0]});s.forEach(function(s){var r=s.match(NUMBER_REG)[0],t=(s.match(SIZE_REG)||[0])[0],a=s.match(LANGUAGE_REG)[1],n=e.owner.display_name;entries.push({task:r,user:n,language:a,size:t})})}),entries.sort(function(e,s){var r=e.task-s.task;return r?r:e.size-s.size});for(var e=0;e<entries.length;e++){var s=jQuery("#answer-template").html();s=s.replace("{{TASK}}",entries[e].task).replace("{{NAME}}",entries[e].user).replace("{{LANGUAGE}}",entries[e].language).replace("{{SIZE}}",entries[e].size),s=jQuery(s),jQuery("#answers").append(s)}}var QUESTION_ID=52152,ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:&lt;(?:s&gt;[^&]*&lt;\/s&gt;|[^&]+&gt;)[^\d&]*)*$)/,NUMBER_REG=/\d+/,LANGUAGE_REG=/^#*.*?,\s*\[*([^,\]]+)/,entries=[];</script>

Комбінована таблиця лідерів (30.07.2015 20:00 UTC)

User / Task      1 2 3 4 5 6 7 8 9 A   TOTAL   Tie breaker (if any)

DLosc            2 2 3 2 2 2 2 3 2 2      22
Sp3000           2 2 2 2 2 3 2 2 2 2      21
Doorknob         2 2 2 2 2 2 2 2 2 2      20
mathmandan       2 2 2 2 2 2 2 2 2 2      20   Combined byte count.
MickyT           2 2 2 2 2 2 1 2 2 2      19
Alex A.          2 1 2 2 2 2 1 2 2 2      18
Jacob            2 2 2 2 2 1 0 0 0 2      13
alephalpha       2 2 2 0 2 2 0 0 2 0      12
Martin Büttner   2 0 0 2 2 0 0 2 2 2      12   Combined byte count.
kirbyfan64sos    1 2 2 0 2 X 0 2 0 3      12   Per-language wins.
Maltysen         3 0 0 0 3 2 1 X 2 0      11
plannapus        2 2 0 0 2 2 0 2 0 2      10
jimmy23013       0 0 2 3 0 0 3 2 0 0      10   Solved tasks.
Tom              0 3 0 0 2 2 0 X 3 0      10   Combined byte count.
FryAmTheEggman   1 0 2 0 2 0 2 0 2 0       9
Vioz-            1 0 2 2 2 2 0 0 0 0       9   Combined byte count.
Toby Speight     2 0 0 0 2 2 0 0 0 2       8
Ismael Miguel    0 0 0 0 2 2 0 0 0 2       6
Pulga            0 2 2 0 0 0 0 0 0 2       6   Combined byte count.
flawr            2 0 2 0 0 0 0 0 0 0       4     
manatwork        2 0 0 0 0 2 0 0 0 0       4   Combined byte count.
TheNumberOne     1 0 0 0 2 0 0 0 0 0       3

Завдання, позначені символом X, присутні, але недійсні.

Комбінована таблиця лідерів була побудована вручну. Скажіть, будь ласка, чи є якісь помилки.


1 Мови вважаються різними, якщо вони не є різними версіями однієї мови, тому існує лише один JavaScript, один Python і один TI-BASIC, але C, C ++, Octave і MATLAB - це чотири різні мови.

2 Якщо ви вирішите завдання n за допомогою мови L у х байтах, хтось інший вирішує ту саму задачу на тій же мові з тим самим числом байтів, ви перейдете на мову M і відкатуєте свою редагування, інший відповідач збереже бонусний бал.

3 Кількість балів, зароблених за правилами балів 1, 2 і 3 (у цьому порядку), комбінований підрахунок байтів усіх розв’язаних завдань (нижчий - краще) і, нарешті, підрахунок голосів (чим краще, тим краще) виконує функції проривів.


6
Для уточнення, ця проблема обмежується тим, хто знає принаймні 10 мов? Я прошу ... друга ...
vijrox

2
@VijayRamamurthy: Вам не потрібно вирішувати всі завдання, щоб брати участь, тому якщо ви вирішите лише одну задачу, вам потрібно знати лише одну мову.
Алекс А.

2
@JoeZ. У нас було кілька викликів із 9 отворами, але вони набрали записи в сумі байтів. Не те, що моє підрахунок якимось чином пов’язане з тим, як забиваються десятиборства, але я хотів уточнити, що це складний виклик.
Денніс

4
@lolesque: Це було б стандартним завданням для гольфу з кодом. Вся справа в тому, що для кожної задачі використовується інша мова.
Денніс

3
@NotthatCharles: Я запитав Григорія, і він сказав 1 січня.
Денніс

Відповіді:


5

Завдання 1, GolfScript, 8 байт

~,{+}*.*

Та сама ідея, що і відповідь Мартина на CJam .


Завдання 2, QBasic, 74 71 байт

INPUT a
r=a>1
FOR i=2 TO a-1
r=r*(a MOD i)
NEXT
?r*((a\2AND a)=a\2)

Тестовано на QB64 з вимкненим розширенням синтаксису. 1 Основна частина програми перевіряє, чи вказане число aє простим, беручи amod кожне число 2 <= i< aі множуючи результати. Результат - r0, якщо число не є простим, а інше - нульовим. Останній рядок використовує порозрядному ANDз цілим поділом на 2, щоб перевірити, чи є бінарне представлення aвсіх, тобто aвиду 2 n -1. Помножуючи це на r0 (false), якщо число не є простим розміром Мерсена, а інше ненульове (truthy) значення інакше. ?- це ярлик для PRINT.

Найбільший тестований Мерсенн, який я тестував, 8191, дає результат 1.#INF- який досі є правдою! (Я перевірив IFзаяву, щоб переконатися.)

1 Це не змінює семантику програми. Якщо ви введете вищевказаний код у стандартний DOS QBasic, він буде автоматично відформатований із додатковими пробілами, але він буде працювати точно так само.


Завдання 3, Pyth, 6 байт

ehc2SQ

Читає список стилю Python із stdin. Основна магія тут - cхоп-оператор: даючи int та list, він розбиває список на n частин. Тож c2SQрозбиваємо відсортований список введення навпіл. Зручно, коли довжина непарна, перша половина більша, тому медіана завжди є останнім елементом першої половини. Це eдруге число hрезультатів рубання.


Завдання 4, CJam, 26 байт

ri{_2%z\_0>\-2/_3$+?}h;]W%

Підозрюю, це може бути скорочене.

Алгоритм:

  • Читання цілого числа.
  • Зробити, поки значення не дорівнює 0:
    • Візьміть абс (i% 2). Це наступна цифра (негабіт?).
    • Розділіть i на -2.
    • Якщо я не був позитивним, додайте до результату абс (i% 2). Це слід виправити кутовий випадок: 3 іде до -1, а -3 має перейти до 2, а не 1.
  • Відкиньте зайве 0, збирайте стек у масив, обертайте та друкуйте.

Справа в тому, що це цикл "do-while".


Завдання 5, Bash, 50 байт

echo pneumonoultramicroscopicsilicovolcanoconiosis

Не багато пояснювати.


Завдання 6, Python, 78 байт

from datetime import*
d=date.today()
if d.day<2>d.month:print"Happy New Year!"

Тут потрібен Python 2. Оператори нерівності ланцюжків Python тут можуть бути добре використані.


Завдання 7, ActionScript, 82 байти

x=""
while(x.length<64){c=chr(13312+random(6582));if(x.indexOf(c)<0)x+=c}
trace(x)

ActionScript є членом сімейства ECMAScript. Цей код вимагає ActionScript 2 - набагато краще для гольфу з кодом, оскільки я можу використовувати застарілі функції на зразок chrзамість версії 3 String.fromCharCode!

Вихід на панель консолі:

Скріншот 7 завдання


Завдання 8, Піп, 9 19 байт

Рішення регулярного вираження не дуже спрацювало, тож ось замість нього рядкові операції.

Fcab@>:o&:(b@?c)+1o

Сховище Github для Pip .

Приймає два рядки як аргументи командного рядка. Коли aє підрядність, виводить додатне ціле число (truthy); в іншому випадку результат - нульовий (фальшивий), який не дає результату.

Пояснення:

                     Cmdline args -> a,b; o = 1 (implicit)
Fca                  For each character in a:
           b@?c      Find character's index in b (nil if not found)
          (    )+1   Add 1; all possible indices except nil are now truthy
       o&:           Logical AND with o
   b@>:              Slice b to everything at index o and afterward (Python b=b[o:])
                     (If c wasn't found, b becomes nil, but we don't care at that point)
                  o  Auto-print o

Завдання 9, Prolog (SWI), 68 байт

m(L,N,R):-L=[H|T],m(H,N,I),m(T,N,U),R=[I|U];L=[],R=[];R is L*N.

Пролог зазвичай не є конкурентоспроможним у коді гольфу, тому я дуже задоволений цим рішенням.

Визначає предикат m із вхідними параметрами Lдля списку та Nдля числа та параметру виводу R. Визначення m- потрійна диз'юнкція:

  • Якщо Lможе бути уніфіковані з [H|T], це список, принаймні , один елемент в ньому. Викличте mрекурсивно на голову та хвіст цього списку, і отримайте результати знову разом у новий список, який уніфікований R.
  • Якщо Lможуть бути об'єднані з [], уніфікувати Rз []а.
  • В іншому випадку Lвважається числом; L*Nобчислюється та присвоюється R.

Приклад запуску за допомогою swiplUbuntu:

dlosc@dlosc:~/golf$ swipl -qs arrayMult.prolog
?- m([1,2,3],5,R).
R = [5, 10, 15] .

?- m([[3,4],[5,6]],3,R).
R = [[9, 12], [15, 18]] .

?- m([[[1,2],[3,4]],[[5,6],[7,8]]],2,R).
R = [[[2, 4], [6, 8]], [[10, 12], [14, 16]]] .

Завдання 10, С, 114 112 106 байт

#define F;printf("\n");for(i=0;i<c;i++)printf(
i;t(c){F" ______  ")F"|      | ")F" ()--() ~");putchar(8);}

Тестували gccна Ubuntu. Визначає функцію, tяка приймає цілий аргумент. Використовує три forпетлі для виведення, сильно стиснуті через макрозловживання. Використання символу зворотної області для стирання трейлінгу ~призводить до досить дивного шаблону пробілів, алеThe output may be surrounded by any amount of whitespace as long as it looks like in the example.

Приклад виконання t(3):

dlosc@dlosc:~/golf$ ./a.out

 ______   ______   ______
|      | |      | |      |
 ()--() ~ ()--() ~ ()--() dlosc@dlosc:~/golf$

На жаль, ваш код для завдання 8 ідентифікується a.cяк послідовність abc.
Денніс

@Dennis Це є невдалим. (Хороший улов, хоча, дякую.) Виправлено, вартістю 10 байт.
DLosc

17

Huzzah, спочатку виконати всі завдання! \ o /

Завдання 1, Perl, 32 байти

$_=eval join"+",map$_**3,0..$_-1

+1 байт для -pпрапора. Коментар: Перл дивний .


Завдання 2, CJam, 14 байт

{_mp\)2mL_i=&}

Моя перша програма CJam!


Завдання 3, GolfScript, 8 байт

~$.,(2/=

Eval STDIN введення, сортування, взяття на довжину, зменшення, поділ на два, а потім взяти пункт відсортованого масиву в цьому індексі.


Завдання 4, Python, 77 байт

def f(i,d=''):
 while i:i,r=i/-2,i%2;i+=r<0;r+=2*(r<0);d=`r`+d
 return d or 0

Завдяки @ mbomb007 за бриття 24 (!) Байтів та @ Sp3000 ще 11.


Завдання 5, Java, 66 байт

String f(){return"pneumonoultramicroscopicsilicovolcanoconiosis";}

Нудно. Тут вибили багатослівну мову, щоб згодом зберегти місце для мов гравців.


Завдання 6, Bash, 39 байт

((`date +%j`<2))&&echo Happy New Year\!

Дякуючи @manatwork за те, що навчав мене про те %j, голити 10 байт.


Завдання 7, JavaScript, 148 байт

a=[];Array(65).join('x').replace(/./g,function(){while(a.push(s=String.fromCharCode(13312+Math.random()*6582))&&a.indexOf(s)==s.length-1);return s})

Створіть рядок з 64 x-х, а потім замініть їх усією функцією зворотного виклику, яка повертає випадковий один із цих символів, якщо він ще не є в масиві використовуваних символів.


Завдання 8, Іржа, 130 байт

fn f(a:String,b:String)->bool{let mut c=b.chars();for x in a.chars(){match c.find(|&y|x==y){Some(_)=>(),None=>return false}};true}

Так, Іржа дуже погана в гольфі.


Завдання 9, страус, 18 байт

{:n;'`\d+`{~n*}X~}

Версія 0.7.0 . Перевіряє масив, чи замінює регулярний вимір, щоб змінити номери на їх перемножені версії, а потім знову оцінює отриманий рядок.


Завдання 10, Ruby, 58 байт

->n{([' ______  '*n,'|      | '*n,' ()--() ~'*n]*$/).chop}

"\n"є на один символ довше, ніж на "{actual newline}"один символ довше $/. Дякуємо @ MartinBüttner за гоління {невизначеної, але великої кількості} байтів за допомогою різних хитрощів чорної магії.


Завдання 6 - $(…)`…`.
манатура

@manatwork Спасибі, відредаговано.
Дверна ручка

Ще раз замислюючись, (поглинання кофеїну в процесі…), чому цей тривалий формат% D? [ `date +%j` = 001 ]Або навіть ((`date +%j`<2)). (Якщо припустити, GNU date, який, безумовно, підтримує формат "% j день року (001..366)".)
манатура

@manatwork О, дуже приємно. Ще раз дякую, додано для відповіді.
Дверна ручка

Завдання 4 можна скоротити, використовуючи ((число + 0xAAAAAAAA) ^ 0xAAAAAAAA) алг.
Яків

15

Завдання 1, 3вар, 14 13 байт

'><k*>#aa/>sp

( Сторінка вікі Esolang для 3var )

'                  R = n
 >                 A = n
  <k               B = n-1
    *              R = A*B = n(n-1)
     >             A = n(n-1)
      #aa          B = 2
         /         R = A/B = n(n-1)/2
          >s       A = (n(n-1)/2)^2
            p      Output A

Вводиться через кодову точку, наприклад, простір 32.

На щастя, всі операції, які нам потрібні для реалізації формули, - n^2 (n-1)^2 / 4це одиночні знаки (декрементування, множення та квадратування), але для встановлення B2 байтів потрібно 2 ( примноження -збільшення-збільшення).


Завдання 2, Сітківка, 38 33 байт

^
1
^(..|.(..+)\2+|(.(..)+)\3*)$
<empty>

( Сховище Github для сітківки )

Кожен рядок складається в окремому файлі, але ви можете протестувати вище, як і у -sпрапорці (замінюючи <empty>нічим). Введення має бути неоднаковим із значенням 1s, наприклад, 1111111для 7.

Ось що робить кожна підстановка регулярного вираження (вказана парою рядків):

  1. Вставте додатковий 1 вперед
  2. Замінити що - небудь форми 2, 1 + compositeабо not power of 2нічого.

Це додає додаткові кошти 1до праймерів Мерсенна, тоді як будь-яке інше число видаляється.


Завдання 3, Ракетка, 71 байт

#lang racket
(define(m x)(list-ref(sort x <)(quotient(-(length x)1)2)))

Лісоподібні мови просто надто багатослівні. Приклад виконання:

> (m `(1 3 4 2))
2

Завдання 4,> <>, 31 байт

:?!v:2%:@-02-,
)?~\l1
!;n>l?

( Сторінка вікі Esolang для> <> )

Наведене вище - 28 байт, і потрібен -vпрапор в інтерпретаторі Python ще для 3-х байт , наприклад, виконувати подібний запуск

$ py -3 fish.py negabinary.fish -v -137
10001011

Приємно в тому, що тут є те, що ми можемо обчислювати цифри по черзі за модулем і поділом, що дає цифри у зворотному порядку, ідеально підходить для друку з стека.


Завдання 5, Parenthetic, 1448 1386 байт

((()()())(()()()())((()())((()(())()))((()(())(())())((()(()))(()(())())((()(()))((())())((()()(()))((())()()()()()()()())((())()()()()()()()()()()()())))))))((()()())(()()())((()())((()(())()))((()()()())((()(()))(()(())())((())()()()()()()()()()()())))))((()(()))((()()())((())()()()()))((()()())((())()()))((()()()())((())()()()()))((()()())((())()()()()()()()()()))((()()())((())()))((()()())((())()()()))((()()())((())()()))((()()())((())()()()))((()()())((())()()()()()()()()()))((()()())((())))((()()())((())()()()()()()()()))((()()())((())()()()()()()))((()()()())((())))((()()())((())()))((()()()())((())()()()()()()()()))((()()()())((())()()))((()()())((())()()()()()()))((()()())((())()()()))((()()())((())()()()()()()()))((()()()())((())()()))((()()())((())()()()))((()()())((())()()()()))((()()()())((())()()()()()()()()))((()()()())((())()()))((()()())((())()()()()()()()))((()()()())((())()()()()()()()()))((()()())((())))((()()()())((())()()()()()()()()))((()()()())((())()()))((()()())((())()()()))((()()())((())()()()()()()()()()()))((()()())((())()()()))((()()())((())))((()()()())((())()()))((()()()())((())))((()()())((())()()))((()()())((())()()()))((()()()())((())()()))((()()())((())()()()))((()()())((())()()))((()()()())((())()()()()()()()()))((()()())((())()()()))((()()())((())()()()()()()()))((()()()())((())()()()()()()()()))((()()())((())()()()()()()())))

( Сховище Github для Parenthetic )

У мене є відповідь CJam на це, яка коротша, ніж сама рядок, але я не можу її використовувати, тому я подумав, що піду іншим шляхом.

Код генерації Python 3:

char97 = "((()()())(()()()())((()())((()(())()))((()(())(())())((()(()))(()(())())((()(()))((())())((()()(()))((())()()()()()()()())((())()()()()()()()()()()()())))))))"
char108 = "((()()())(()()())((()())((()(())()))((()()()())((()(()))(()(())())((())()()()()()()()()()()())))))"
open_str = "((()(()))"
close_str = ")"

target = "pneumonoultramicroscopicsilicovolcanoconiosis"
output = [char97, char108, open_str]

for c in target:
    if ord(c) >= 108:
        output.append("((()()())((())%s))"%("()"*(ord(c)-108)))
    else:
        output.append("((()()()())((())%s))"%("()"*(ord(c)-97)))

output.append(close_str)
print("".join(output))

Ось відповідний код, схожий на Lisp:

(define f (lambda (n) (char (+ n 97))))
(define g (lambda (n) (f (+ n 11))))

(+
   (g 4)  // p
   (g 2)  // n
   (f 4)  // e
   ...
)

Мабуть, це було б добре переосмислити define, називаючи gяк ()(), що врятувало багато байтів.


Завдання 6, CJam, 26 байт

XY]et1>>"Happy New Year!"*

Перевіряє, що [month day]частина локального масиву часу менша [1, 2].


Завдання 7, Python, 73 байти

from random import*
print(*map(chr,sample(range(13312,19894),64)),sep="")

Просто пряма реалізація Python 3.


Завдання 8, прелюдія, 46 41 байт

?(?)#(#)?(v-(#)?)10)!
      ^      1 # (0

( Вікі-сторінка Esolang для прелюдії )

Я думаю, що це працює - це, мабуть, все-таки пограє в гольф, але я вперше займаюсь нетривіальним гольфом у Прелюді. Формат введення є <needle>NUL<haystack>, де NULє 0x00. Це найкраще працює NUMERIC_OUTPUT = Trueв інтерпретаторі Python, оскільки це зробить його вихідним 1або 0відповідним чином.

Я вибрав Prelude, тому що є два властивості, які дуже приємно вирішують це завдання:

  • Він заснований на стеці, тож ви можете спочатку читати в голку, потім обробляти копицю сіна по одній значці,
  • Стек Prelude має нескінченну кількість 0 внизу, тому вам не потрібно обробляти випадок, коли в голки не вистачає символів.

Це було б ще краще, якби Прелюдія мала НЕ оператора.

Ось поділка:

?(?)#    Read input up to the NUL, discarding the NUL afterwards

(#)      Move the needle to the second voice, effectively reversing the stack
 ^

?(...?)  Read haystack

  v-     Compare top needle char with haystack char by subtraction

  (#)    If equal, pop the needle char
   1 #

10)!     Output 1 if the top needle char is 0 (bottom of stack), 0 otherwise
(0

(-5 байт завдяки @ MartinBüttner)


Завдання 9, Математика, 4 байти

#2#&

Щось подібне 2 {{0, 1}, {1, 0}}- неявне множення в Mathematica, тому це просто ставить аргументи поруч.

Як зазначають @MartinButtner та @alephalpha , 1##&це ще 4 байт відповіді. Дивіться попереднього для пояснення.


Завдання 10, Rail, 246 237 байт

$'main'
 0/aima19-@
@------e<
         -(!!)()[ ][ ______ ]{f}[\n\]o()[ ][|      |]{f}[\n\]o()[~][ ()--() ]{f}#
$'f'                 #           #
 -(!x!)(!y!)(!!)()0g<  -(x)o()1g<  -(y)o()1s(y)(x){f}#
                     -/          -/

( Вікі-сторінка Esolang для Rail )

Я не міг пропустити можливість виконати завдання, пов’язані з поїздом на залізниці :) Білий простір виглядає досить шалено, але з розгалуженням, що займає три лінії, буде потрібно трохи попрацювати.

Введення є цілим числом через STDIN, але там повинен бути EOF. Верхня ліва частина

 0/aima19-@
@------e<

це цикл atoi, який перетворює вхід на ціле число, а не EOF (перевірено eінструкцією).

Функція fв останніх трьох рядках приймає x, y, nі виводить строкові x nстроки, розділені на y. Функція рекурсивна, nдекрементуючи по одній щоразу, поки вона не стане нульовою. fназивається тричі, подаючи різні рядки для кожного ряду. Як не дивно, Rail дозволяє імена змінних бути порожніми, що економить кілька байт.

Більшість байтів, на жаль, походить із цього сайту (!x!), який спливає верхню частину стека і присвоює йому змінну x, і (x), який натискає xна стек. Це необхідно, оскільки в Rail немає жодного оператора-дубліката, тому (!x!)(x)(x)єдиний спосіб скопіювати верхню частину стека.


Якби завдання 2 було в rs, ви б зберегли 2 байти, а взяти цифри замість унарних коштувало б лише 14 байт. ;)
kirbyfan64sos

Коли я побачив ракетку, я подумав, що вам подобаються дужки; але
батьківські

13

Завдання 1, CJam, 7 байт

q~,:+_*

Я просто хотів отримати (мабуть) оптимальне рішення CJam для цього дюйма. Це використовує той факт, що сума перших n кубів - це квадрат n-го трикутного числа, який сам по собі є сумою перших n чисел.

Перевірте це тут.


Завдання 4, Fission, 173 88 78 69 68 байт

Сховище GitHub для Fission.

 /@\O/S@+>\
^{ }[<X/ @/;
,\?/@\J^X\
'M~\$ $
UK/W%@]  /
D
?\{\/
0'A Y

Моя друга досить складна програма Fission. :)

Формат введення трохи дивний. Щоб підтримати негативні введення, очікується, що перший символ буде +або -позначити знак. Значення байта другого символу - це величина вводу (оскільки Fission не може спочатку прочитати десяткові цілі числа). Тож якщо ви хочете, 111ви перейдете +oна STDIN. І якщо ти хочеш -56, передай це -8. Замість +і -ви можете використовувати будь-який символ з нижчим або вищим символьним кодом відповідно. Це може бути корисно , щоб передати що - щось на зразок -n(що ваша echoміць ласощі в якості аргументу) , як, наприклад, 0n.

Давайте подивимось, як ми можемо знайти негабінарне подання додатного числа. Ми хочемо обчислити число від найменшого до найбільш значущого біта (ми натиснемо ці біти на стек і надрукуємо їх усі наприкінці, щоб отримати їх у правильному порядку). Перша цифра - це лише парність числа, і ціле число ділимо на 2, щоб продовжити обробку. Наступна цифра зараз від’ємна (зі значенням -2), але слід зазначити, що цей біт встановлюватиметься кожного разу, коли 2-розрядний буде встановлений у звичайному бінарному числі. Єдина відмінність полягає в тому, що нам потрібно протиставити -2 з позитивними більш високими значеннями. Отже, ми робимо це:

  • Ми знову визначаємо паритет - це наступний негабіт - і ділимо на 2, як і раніше.
  • Якщо ця цифра була a 1, ми збільшимо число, що залишилося на 1, щоб протидіяти негативному біту (різниця між негабітом і бітом - це один раз значенням наступного більш значущого біта).

Значне спрощення коду призводить до того, що помічаємо, що умовне додавання сюди еквівалентно округленню числа вгору при діленні на цілі числа (якщо відкинутий біт був 1, ми збільшуємо результат, розділений на ціле число, на 1).

Потім наступний біт - це знову лише позитивне значення, щоб ми могли його визначити нормально. Це означає, що ми хочемо, щоб цикл обчислював два біти одночасно, чергуючи між округленням і округленням для залишкового числа, але ми хочемо ввести цикл посередині, тому ми починаємо з округлення вниз.

Як ми можемо обробити від'ємні цілі числа? Проблема полягає в тому, що Fission насправді не може робити довільну арифметику за від'ємними цілими числами, оскільки маси завжди є негативними. Тож треба було б зробити щось справді складне, як працювати з величиною та слідкувати за знаком десь в іншому місці. Однак негабінарне подання негативного числа може бути обчислене на основі відповідного додатного числа:

Якщо n від'ємне, обчисліть негабінарне подання n / 2 (округлене вгору ) і додайте парність n .

Це саме перший крок нашого двобітного циклу. Отже, все, що нам потрібно зробити, - це запустити цикл в іншій точці, якщо знак негативний.

Більшість заощаджень від 173 оригінальних байтів надійшли від цих даних, які дозволили мені стиснути три чеки парності та двосекційну петлю в один цикл з однією четкою паритету.

Цей пост буде занадто довгим, якщо я детально поясню весь код, але я зазначу кілька розділів, щоб дати приблизну схему потоку управління, і ви можете розгадати деталі з посиланням на Fission.

 /@\
^{ }[
,\?/
'
U
D
?

Починаючи з D, це зчитує біт знака про енергію та величину в масі атома, який закінчується в [(йде вправо). Цей біт знаків буде чергуватися після кожного проходження через перевірку парності та визначатиме, чи збережемо ми округлену вниз чи закруглену половину вхідного циклу.

     /S@+>\
    [<X/ @/
 \  @\J^X\
 M  $ $
 K  %@]  /

Це цикл, який обчислює окремі біти і подає правильну половину в наступну ітерацію. Команди " Sі" Jвикористовуються для створення копії правої половини на основі поточного біта знаків, Xкопіювання - s. У >верхньому правому куті обчислюється фактичний біт, який потім надсилається до стеку, Kщоб отримати його згодом. Я думаю, що макет правого верхнього кута досить витончений і, безумовно, варто детально вивчити, якщо ти зацікавився Fission.

Це %перемикач, який подає число назад у цикл до тих пір, поки це більше 0.

    O


 M~\
 K/W%

 \{\/
0'A Y

Як тільки число досягне 0, воно замість цього відображається вниз. Це запускає ще один цикл, який витягує біти зі стека, додає їх до коду символів 0та друкує їх O. Програма завершується, коли стек порожній, тому що атом керування в кінцевому підсумку буде висунутий на стек (а згодом більше не залишиться рухомих атомів).


Завдання 5, Прелюдія, 219 179 96 байт

Сторінка Esolangs для прелюдії.

Інтерпретатор фрагмента стека для прелюдії.

29+129+716705-7607-05-4759+705-14129+05-18705-29+719+05-1507-19+39+449+767549+03-68(67+^+^+^++!)

Це почалося як стандартна ручна робота з програмою Prelude з фіксованим виходом з трьома голосами. Після деякого спілкування зі Sp3000 я вирішив спробувати один голос. Виявилося, що це спрацювало досить добре, адже набагато простіше повторно використовувати старі букви. Тоді Денніс дав мені кілька підказок, і я знайшов поточну версію: ідея полягає в тому, щоб натиснути всі зсуви від листа hна стек одного голосу в зворотному порядку, а потім просто надрукувати їх по черзі в циклі. hвибирається через те, що hв рядку немає (що важливо - інакше 0зміщення припиняє цикл) і тому, що воно мінімізує кодування зрушень з точки зору двозначного та негативного зміщення.

Кодування зміщення було створено за допомогою цього сценарію CJam .


Завдання 8, Математика, 28 байт

LongestCommonSequence@##==#&

Так, для вбудованих модулів. (Назви Mathematica тут трохи дивні ... LongestCommonSubsequenceзнаходить найдовшу загальну підрядку, а LongestCommonSequenceзнаходить найдовшу загальну послідовність .)


Завдання 9, J, 1 байт

*

Те саме, що відповіді APL та K, але, схоже, ще ніхто не взяв J.


Завдання 10, Retina, 67 60 байт

Сховище GitHub для сітківки.

(.*).
 ______  $1<LF>|      | $1<LF> ()--() ~$1
+`(.{9})1
$1$1
~$
<empty>

Кожен рядок складається в окремому файлі, його <LF>слід замінити символом нового рядка і <empty>повинен бути порожнім файлом. Ви також можете помістити все це в один файл і скористатися -sопцією, але це не дозволяє вставляти символи нового рядка замість цього <LF>. Ви можете наслідувати це, роблячи щось подібне

echo -n "111" | ./Retina -s train.ret | ./Retina -e "<LF>" -e "\n"

Як показано у наведеному вище прикладі, очікується, що вхід не буде однаковим. Ідея коду полягає у створенні трьох примірників одинарного введення (мінус 1), кожна з яких має копію відповідного рядка. Потім ми кілька разів дублюємо останні дев'ять символів перед a, 1поки всі 1зникнуть, тим самим повторюючи рядки за необхідності. Нарешті, ми видаляємо сторонні сліди ~.


10

Е, я почну з пари, напевно. Перший раз гольф.

Завдання 1, Python, 38 21 байт

lambda n:(n*n-n)**2/4

Підсумуйте список усіх кубів до x. Змінено вираз завдяки xnor

Завдання 2, TI-Basic 89, 244 байти

Func
If iPart(log(x+1)/log(2))=log(x+1)/log(2) Then
 Return log(x+1)/log(2)
Else
 Return 0
EndIf
EndFunc
Func
If isPrime(x)=false
 Return 0
If ipart(log(x+1)/log(2))=log(log(x+1)/log(2)) Then
 Return log(x+1)/log(2)
Else
 Return 0
EndIf
EndFunc

Не на 100% впевнений у цьому, перевірятиме, коли я знайду нові батареї для свого калькулятора. isPrime - це вбудований, ipart - ціла частина (2.3 -> 2)

Завдання 3, Perl, 45 34 байт

@n=sort{$a-$b}@ARGV;print$n[$#n/2]

perl файл 1 2 3 4 -> 2. Збережено пару байтів завдяки @nutki. Друкується, а не зберігається до змінної, а не друкується змінною.

Завдання 4, Ruby, 43 40 байт

x=2863311530
p ((gets.to_i+x)^x).to_s(2)

Принаймні, він працює в 1.9, не знаю про 1.8. У двійковій формі "10" * 16 (або 2863311530) плюс число, xor з цим 10101010 ... є небібліографічним. Виводить рядкове представлення лапками (3 -> "111", а не 3 -> 111). Неможливо знайти математику, щоб записати х менше символів.

Завдання 5, Malbolge, 682 354 байт

D'``_]>n<|49ixTfR@sbq<(^J\ljY!DVf#/yb`vu)(xwpunsrk1Rngfkd*hgfe^]#a`BA]\[TxRQVOTSLpJOHlL.DhHA@d>C<`#?>7<54X8165.R2r0/(L,%k)"F&}${zy?`_uts9Zvo5slkji/glkdcb(fed]b[!B^WVUyYXQ9UNrLKPIHl/.JCBGFE>bBA@"!7[;{z276/.R2r0)(-&J$j('~D${"y?w_utyxq7Xtmlkji/gf,MLbgf_dc\"`BA]\UyYXWP8NMLpPIHGLEiIHGF(>C<A@9]7<;:3W7w5.-210/(L,%k#('~}C{"y?`_uts9wpXn4rkpoh.lNMiha'eGF\[`_^W{h

Перевірте тут онлайн Подумайте, що це так коротко, як і піде. Гольфували, скільки могли. Збережено 300 байт, так що хе?

Завдання 6, bash, 62 50 40 байт

[ `date +%j`=1 ]&&echo 'Happy New Year!'

Дізнався про% j з іншої публікації.

Завдання 10, Befunge-98, 121 байт

>&:>1-:" ____"v
   |,k8: '"__"<
   >a,$:>1-v
      > |
>' 8k,^ #
^|':k4 '|':<
v ',*25$<
>,:1-: ")(--)("v
^," ~"_@#,k6" "<

Змінено на функцію-98. Старий був Befunge-93, 227 157 147 байт. Використовувані гриби, написані в Haskell для тестування. Використовували "do кілька разів k" і додавали в стек одиночні символи ". У мене є відчуття, що це може бути гольф до 110 або менше, але я вже витратив надто багато часу на це ...


@ Денніс, оскільки я не можу запитати про головну публікацію, я прошу тут. Чи вхід відокремлений космосом для завдання 3? Це не буде в [].
Яків

Що б не відповідало вашим потребам.
Денніс

1
Можна скоротити суму кубів за формулою якlambda n:(n*n-n)**2/4
xnor

Ви можете використовувати 0=fPart(expression) rather than iPart (вираз) = вираз` у вашій відповіді TI-89 BASIC.
lirtosiast

1
Я думаю, що цей аргумент не працює добре, якщо говорити про щось на зразок Python 2/3. Наприклад, `n 'працює краще, ніж str (n) у 2, але не працює в 3. Я не можу придумати інших прикладів на даний момент, мене більше цікавить гольф, на який більше відповідатимуть: p
Яків

9

Перше: завдання 6 технічно НЕ враховується; Я завантажив unc годину тому. Однак я майже завантажив його сьогодні вранці, але вирішив спочатку написати тестовий набір. Ідіот.

Отже, все одно, ось іде!

Зауважте, що більшість unc речей навмисно зворотні, тому &&насправді це означає ||і таке, тому деякі операції виглядають дивно (наприклад, використовуючи -для обчислення куба).

Завдання 1, Haskell, 21 байт

f n=sum$map(^3)[0..n]

Завдання 2, Hy, 135 байт

(import math)(fn[n](and(if(and(not(% n 2))(> n 2))false(all(genexpr(% n i)[i(->> n(math.sqrt)int inc(range 3))])))(->> n dec(& n)not)))

Завдання 3, Дарт, 37 байт

Моя перша функція Dart!

f(l){l.sort();return l[l.length~/2];}

Завдання 5, INTERCAL, 1047 байт

DO ,1 <- #46
DO ,1SUB#1 <- #242
DO ,1SUB#2 <- #152
DO ,1SUB#3 <- #208
PLEASE DO ,1SUB#4 <- #248
DO ,1SUB#5 <- #248
DO ,1SUB#6 <- #192
PLEASE DO ,1SUB#7 <- #128
DO ,1SUB#8 <- #128
DO ,1SUB#9 <- #72
PLEASE DO ,1SUB#10 <- #120
DO ,1SUB#11 <- #8
DO ,1SUB#12 <- #224
PLEASE DO ,1SUB#13 <- #200
DO ,1SUB#14 <- #208
DO ,1SUB#15 <- #32
PLEASE DO ,1SUB#16 <- #208
DO ,1SUB#17 <- #120
DO ,1SUB#18 <- #88
PLEASE DO ,1SUB#19 <- #40
DO ,1SUB#20 <- #8
DO ,1SUB#21 <- #208
PLEASE DO ,1SUB#22 <- #232
DO ,1SUB#23 <- #120
DO ,1SUB#24 <- #208
PLEASE DO ,1SUB#25 <- #248
DO ,1SUB#26 <- #56
DO ,1SUB#27 <- #96
PLEASE DO ,1SUB#28 <- #160
DO ,1SUB#29 <- #208
DO ,1SUB#30 <- #208
PLEASE DO ,1SUB#31 <- #136
DO ,1SUB#32 <- #120
DO ,1SUB#33 <- #192
PLEASE DO ,1SUB#34 <- #112
DO ,1SUB#35 <- #64
DO ,1SUB#36 <- #16
PLEASE DO ,1SUB#37 <- #128
DO ,1SUB#38 <- #48
DO ,1SUB#39 <- #208
PLEASE DO ,1SUB#40 <- #128
DO ,1SUB#41 <- #224
DO ,1SUB#42 <- #160
PLEASE DO ,1SUB#43 <- #40
DO ,1SUB#44 <- #56
DO ,1SUB#45 <- #200
PLEASE DO ,1SUB#46 <- #126
PLEASE DO READ OUT ,1
DO GIVE UP

Завдання 6, unc, 157 байт

!include>=fgQVb%U<=
!include>=gVZR%U<=
false lRNe[]<<gVZR_g t:=gVZR[5]:volatile gZ m:=-YbPNYgVZR[&t]:for[#m%gZ_Zba||m%gZ_ZQNl!=6]chgf[L'uNccl ARj LRNe#']:>>

Завдання 8, rs, 42 байти

#
+#(.)(.*) .*?\1/\1#\2 
.*# .*$/1
[^1]+/0

Демонстраційна демонстрація.

Завдання 10, Pyth, 46 байт

jb(j*d2m+\ *\_6Qjdm"|      |"Qj\~m" ()--() "Q)

Демонстраційна демонстрація.


@Dennis На жаль! Виправлено!
kirbyfan64sos

1
Ну, я не знаю unc, але я впевнений, що вам не потрібен один із !include. Не зовсім впевнений, який саме.
Денніс

@Dennis Перший включити є stdio.h, другий є time.h. Мені потрібно обоє.
kirbyfan64sos

Що uncвикористовується для складання коду С? GCC буде працювати чудово без цього stdio.h. Не впевнений time.h.
Денніс

@Dennis unc не має компілятора набору. Він просто виводить код C; Я повинен сам це скласти. Однак це має сенс; Я перевірю це пізніше.
kirbyfan64sos

8

Завдання 1, APL, 7 байт

+/3*⍨⍳⎕

Ви можете спробувати його в режимі он-лайн, використовуючи ngn / apl, хоча він буде працювати з будь-якою реалізацією APL, яка за замовчуванням позначає початок індексу 0.

Це кубів кожне ціле число від 0 до входу ( ⍳⎕) -1 шляхом коммутації ( ) аргументів до оператора енергії ( *). Отриманий вектор зменшується шляхом підсумовування ( +/) і повертається скаляр.


Завдання 2, Юлія, 42 байти

n->(isprime(n)&&int(log2(n+1))==log2(n+1))

Це створює анонімну функцію, яка приймає як вхідне ціле число і повертає булева. Щоб зателефонувати, дайте ім’я, наприклад f=n->....

Спочатку ми використовуємо вбудовану функцію Джулії, isprimeщоб перевірити, чи nє основним. Якщо це так, ми перевіряємо, що log2(n+1)це ціле число. Якщо так, nто можна записати як 2^k-1для деяких k, і, таким чином, nє прем'єром Мерсенна.


Завдання 3, ELI , 19 байт

{f:x[<x][~.0.5*#x]}

Це створює монаду, fяка повертає медіану вхідного вектора.

Недоліки + пояснення:

{f:         // Define a function f
 x[<x]      // Sort the input vector
 [          // Select the element at index...
 ~.0.5*#x   // ceiling of 0.5 * length(input)
]}

Приклади:

    f 1 2 3 4
2
    f ?.!20   // Apply f to 20 random integers in 1..20
4

Завдання 4, Октава, 39 байт

@(n,x=2863311530)dec2bin(bitxor(n+x,x))

Це створює функцію ручки, яка приймає ціле число як вхід і повертає пов'язаний негабінарний рядок. Щоб зателефонувати, дайте йому ім’я, наприклад f=@..., і запустіть з feval(f, <input>).

Ви можете спробувати в Інтернеті .


Завдання 5, CJam, 47 байт

"pneumonoultramicroscopicsilicovolcanoconiosis"

Рядок просто друкується до STDOUT. Ви можете спробувати в Інтернеті, якщо відчуваєте себе так схильно.


Завдання 6, Пакет Windows, 46 байт

if "%date:~4,5%"=="01/01" echo Happy New Year!

Змінна %date%містить у формі поточну дату Thu 06/25/2015. Ми можемо вибрати місяць і день, отримуючи подстроку довжиною 5 після пропуску перших 4 -х символів: %date:~4,5%. Звідти ми просто перевіряємо, чи це 1 січня, і говоримо з Новим роком, якщо він є.


Завдання 7, Pyth, 26 байт

=Gr13312 19895FNU64pC.(.SG

Спочатку ми віднесемо Gдо діапазону від 13312 до 19894 включно. Потім обводимо цикл 64 рази, і при кожній ітерації перетасовуємо G( .SG), видаляємо та повертаємо останній елемент ( .() та друкуємо його представлення символів ( pC).

Ви можете спробувати в Інтернеті .


Завдання 8, Ruby, 36 байт

def f(a,b)!b.tr("^"+a,"")[a].nil?end

Це визначає функцію, fяка приймає два рядки aі bде aрядок, який слід знайти в межах b.

Все, окрім символів у a, видалено із bвикористання, .tr()і ми перевіряємо, чи aточно містить результат використання []. Це буде повертати , nilякщо рядок не знайдена, тому ми можемо отримати логічне значення, використовуючи !з .nil?.


Завдання 9, R, 16 байт

function(x,n)n*x

Це створює неназваний об'єкт функції, який приймає будь-який тип масиву чи матриці xта ціле число nта множує кожен елемент xна n. Якщо ви хочете, можете спробувати його в Інтернеті .


Завдання 10, Python 3, 92 байт

n=int(input())
l="\n"
w=" ()--() "
print(" ______  "*n+l+"|      | "*n+l+(w+"~")*(n-1)+w)

Досить прямо. Ви можете спробувати в Інтернеті .


Відповідь APL - це не зовсім 7 байт, оскільки три символи Unicode у більш високих діапазонах.
Том

6
@Tom: Кожна відповідь може вибрати найбільш зручне кодування. На кодовій сторінці APL один символ - один байт.
Денніс

Ви можете спробувати його в Інтернеті, якщо відчуваєте себе так:
Луїс Мендо,

7

Завдання 1,> <>, 10 + 3 = 13 байт

::*-:*4,n;

Запустіть це за допомогою офіційного інтерпретатора Python, використовуючи -vпрапор (вартістю 3 байти). Це квадрати величини (n - n*n)і ділиться на 4, що, звичайно, еквівалентно квадрату (n*n - n)і ділення на 4.

Завдання 2, GAP, 63 62 байт

b:=function(m)return[2]=AsSet(Factors(m+1))and IsPrime(m);end;

(Збережено пробіл, записавши рівність навпаки.)

Завдання 3, R, 43 39 байт

f=function(v)sort(v,d=T)[length(v)%/%2]

Дякуємо Plannapus за приємне поліпшення!

Завдання 4, Піет, 155 135 115 5 * 19 = 95 коделів

введіть тут опис зображення

Тест за допомогою цього інтерпретатора , розміром з коделем 13. Або скористайтеся уподобаним перекладачем - повідомте мені, чи є у вас такий, який вам подобається!

Зробити вихід 0замість порожнього рядка для введення 0було незручно. Я використовував, якщо-то, майже на початку, щоб подбати про цю справу; потім цикл while для обчислення цифр у ненульовому випадку і, нарешті, ще один цикл while-циклу в кінці для виведення цифр із стека.

Велике спасибі Sp3000 за дуже корисні коментарі, які допомогли мені зберегти кілька коделів!

Завдання 5, Lua, 52 байти

print"pneumonoultramicroscopicsilicovolcanoconiosis"

Ви можете спробувати тут .

Завдання 6, LaTeX, 157 139 136 127 128 байт

\documentclass{book}\begin{document}\count1=\day\multiply\count1 by\month
\ifcase\count1\or Happy New Year!\else~\fi\end{document}

Якщо продукт дня та місяця є 1, надрукуйте повідомлення; інакше нічого. (Новий рік особливо зручний для цієї конструкції: так як вихід ми шукаємо це 1, нам потрібно тільки одне orзаяву В. nЧТ orоператор визначає поведінку для значення n.)

Примітка: у моїй попередній версії не було повернення рядка, що було помилкою. (Я намагався перевірити цю функцію, але, щоб справді її правильно перевірити, може знадобитися певний час ...)

У моїй оригінальній версії використовувався calcпакет, який був набагато зручнішим, ніж моя поточна версія. Щось пам’ятати про «реальне життя»!

Завдання 7, Ruby, 62 байти

for r in Array(13312..19893).sample(64)
puts [r].pack('U*')end

Завдання 8, JavaScript, 78 байт

h=function(l,m){u=1+m.indexOf(l[0]);return(!l||u&&h(l.substr(1),m.substr(u)))}

Рекурсивне рішення, тестування, чи lє підрядком m. Якщо lпорожній, то !lрезультати в trueі функція припиняється. (У цьому випадку l[0]не визначено, але JavaScript з цим нормально.) В іншому випадку він шукає перший екземпляр l[0]в m. Якщо він не знаходить, то m.indexOf(l[0])призводить -1і тому uпризводить 0і функція завершується.

В іншому випадку він знімає перший запис lта перші uзаписи mта продовжує перевірку.

Завдання 9, Python, 72 60 байт

def i(a,n):
 try:return[i(c,n)for c in a]
 except:return n*a

Звертається до "найнижчого рівня", де aвже не є списком, а лише цілим числом, а потім проводиться множення.

Дякую Деннісу за те, що він врятував мені 12 байт!

Завдання 10, Groovy, 81 байт

def j(n){(' ------  '*n+'\n'+'|      | '*n+'\n'+' ()--() ~'*n).substring(0,27*n)}

Спробуйте тут . Я спочатку намагався реалізувати щось на зразок .join()методу Python для струн, який поєднує рядки з певною "зв'язуючою струною" (на зразок зв'язків між вагонами поїзда). Але це коштувало набагато дорожче, ніж економило.

Я сподіваюся, що я не зіткнувся з будь-якими умовами щодо прийнятних відповідей на цих різних мовах, але, будь ласка, повідомте мене, чи є у мене.

Дякую Деннісу за фантастичний виклик!


except:return n*aзберігає кілька байтів для завдання 9. Для завдання 1 я вважав би -vпрапор одним байтом.
Денніс

@Dennis Дивіться цей мета-пост . Хоча, за допомогою цього мета-повідомлення , ви, ймовірно, можете замінити -vпрапор на i(хоча я думаю, було б добре, якби були згадані обидві версії, для легшого тестування).
Sp3000

@Dennis, дуже дякую за ваше розумне вдосконалення!
mathmandan

1
3 байта правильно по мета пост вище (простір, -, v). Я просто мав на увазі, що у вас є можливість взяти введення як кодову точку через iінструкцію.
Sp3000

1
btw, для №4, негативний модуль не такий дивний - він просто варіюється від мови до мови (наприклад, Java робить це з пам'яті). Одним із способів виведення всього стека може бути збереження чогось у нижній частині стека, що, як ви знаєте, не буде у виході, і зберегти символи друку, поки це не така особлива графіка. Також є PietCreator .
Sp3000

6

Завдання 1, Pyth, 5 байт

s^R3Q

Бере число від stdin. Дякую @Jakube за вказівку на марне U.

Завдання 6, javascript, 56 байт

if(Date().slice(4,10)=="Jan 01")alert("Happy New Year!")

Завдання 7, CJam, 16 байт

6581,mr64<'㐀f+

Створює діапазон, перетасовує, вибирає перші 64, і додає початкове значення та перетворює на символи. 14 символів, 16 байт.

Завдання 8, Октава, 23 байти

@(x,y)intersect(x,y)==x

Визначає анонімну функцію.

Завдання 5, PHP, 45 байт

pneumonoultramicroscopicsilicovolcanoconiosis

Без стиснення, просто відбитки.

Завдання 9, APL 1 байт

 ×

Те саме, що відповідь K.


@ Денніс, я теж цього не знаю - я просто погукав, і цю відповідь склав без тестування :). Я зараз спробую перевірити емулятор.
Мальтісен

@ Денніс ой ти правий, це середнє значення середнього рівня 2, знімаючи це.
Малтісен

1
Що ти робиш із цим простором .slice(4, 10)?
LegionMammal978

@Dennis derrrp. вибачте.
Малтісен

1
Існує лише один місяць абревіатура, що закінчується на "an", тому ви можете залишити J під час тестування. (Це також було б значно коротше /an 01/.test(Date()).)
NinjaBearMonkey

6

Завдання 1, R, 21 19 байт

sum((1:scan()-1)^3)

Досить прямо вперед. Вхід від STDIN.

Завдання 2, Perl, 40 66 байт

$a=log(<>+1)/log(2)+1;print$a==int($a)&&(1x$a)!~/^1?$|^(11+?)\1+$/

Додано основний прапорець (регулярний ресекс Abigails просто перевірити число)

Завдання 3, PARI / GP, 24 22 байти

m(v)=vecsort(v)[#v\2];

Я вперше торкнувся цього. Можливо, варто навчитися трохи більше цього.

Завдання 4, T-SQL, 235 байт

CREATE FUNCTION D(@ INT)RETURNS TABLE RETURN WITH R AS(SELECT @/-2+(IIF(@%-2<0,1,0))D,CAST(ABS(@%-2) AS VARCHAR(MAX))M UNION ALL SELECT D/-2+(IIF(D%-2<0,1,0)),CAST(ABS(D%-2)AS VARCHAR(MAX))+M FROM R WHERE D<>0)SELECT M FROM R WHERE D=0

Функція вбудованої таблиці за допомогою рекурсивного CTE. Дуже великий, але цікавий.

Використовувати

SELECT * FROM D(18)
M
------
10110

Завдання 5, GAP, 48 байт

"pneumonoultramicroscopicsilicovolcanoconiosis";

Завдання 6, Excel, 51 48 байт

=IF(TEXT(NOW(),"md")="11","Happy New Year!","")

Завдяки @Bond за 3 байти.

Завдання 7, Python 2.6, 98 93 85 байт

from random import*
l=range(13312,19893)
shuffle(l)
print ''.join(map(unichr,l[:64]))

Це перший раз, коли я намагався зробити що-небудь на Python, тому могло бути набагато краще. Дякуємо @Dennis та @Jacob за чудові поради

Завдання 8, TCL, 57 байт

proc m {a b} {string match [regsub -all (.) $a *\\1]* $b}

Сором, що видалення пробілів вбиває це

Завдання 9, щука, 53 байти

mixed m(array(array(int))a,int n){return(a[*])[*]*n;}

Функція, яка повертає помножений масив

Завдання 10, Powershell, 88 байт

Function t($n){Foreach($s in "  ______ "," |      |","~ ()--() "){($s*$n).Substring(1)}}

Функція Powershell. Думаю, я можу це трохи скоротити, але ось він зараз є.

І нарешті закінчено :)


Ви можете зберегти 4 байта на завданню 6: =IF(TEXT(NOW(),"md")="11","Happy New Year!","").
Бонд

@Bond Дякую за це
MickyT

Я також не знаю Python, але він l[:63]повинен працювати і (13312,19894)він коротший, ніж шістнадцяткові константи (і сума).
Денніс

@Dennis Спасибі спробуємо це і змінити
MickyT

@Dennis Я вибрав 19893 як найвищу цінність, тому що range(19892,0x4DB5+1)дав мені[19892, 19893]
MickyT

4

Завдання 2, J, 10 байт

1&p:*/@,#:

Попереджує булеве значення 0 або 1, якщо вхід є простим його двійковим поданням, то приймає добуток. Працює над поточною версією Дж.


Завдання 5, HTML, 45 байт

pneumonoultramicroscopicsilicovolcanoconiosis

Завдання 6, риба, 53 байти

test 0101 = (date '+%d%m');and echo 'Happy New Year!'

Спираючись на баш-відповідь.


Завдання 8, APL, 12 байт

{(⍳⍴⍺)≡⍋⍵⍳⍺}

Це вираження функції. Він порівнює порядок знаків, знайдених у більшому рядку, з тим, що можна було б очікувати, якби вони були відсортовані.


Завдання 9, К, 1 байт

*

Має працювати в будь-якій версії. Арифметичні операції розподіляються по масивах.


Коментарі не для розширеного обговорення; ця розмова переміщена до чату .
Мартін Ендер

2
Ваш код для завдання 8 не працює abc caxbxc.
jimmy23013

4

Завдання 1, Ruby, 40 байт

def f n;(0..n-1).inject{|a,b|a+b**3};end

Вперше писав що-небудь у Рубі. Тестували з рубіном 1.8.7.


Завдання 2, R, 50 байт

n=scan();p=log(n+1,2);!p%%1&sum(!n%%2:n,!p%%2:p)<3

Обчисліть p, перевірте, чи це ціле число, і чи n і p - пролі.


Завдання 5, PostgreSQL, 54 байти

SELECT'pneumonoultramicroscopicsilicovolcanoconiosis';

Завдання 6, Lua, 55 байт

print(os.date("%j")=="001" and "Happy New Year!" or "")

Завдання 8, Python, 65 байт

import re;f=lambda s,S:bool(re.search(re.sub(r'(.)',r'\1.*',s),S))

Використання:

>>> import re;f=lambda s,S:bool(re.search(re.sub(r'(.)',r'\1.*',s),S))
>>> f('abc','axbxcx')
True
>>> f('bac','axbxcx')
False
>>> f('abc','axdxcx')
False
>>> f('abc','abc')
True

Завдання 10, Юлія, 73 байти

f(n)=print(" ______  "^n*"\n"*"|      | "^n*"\n"*(" ()--() ~"^n)[1:9n-1])

Завдяки @AlexA за скорочення цього коду! Приклад результатів:

julia> f(0)




julia> f(1)
 ______  
|      | 
 ()--() 

julia> f(2)
 ______   ______  
|      | |      | 
 ()--() ~ ()--() 

julia> f(3)
 ______   ______   ______  
|      | |      | |      | 
 ()--() ~ ()--() ~ ()--() 

Для завдання 2 ви могли скористатисяlog2
MickyT

В даний час я рахую 86 байт для вашого завдання Юлія 10. Але ви можете отримати його до 81, використовуючи лямбда-функцію (тобто замінити f(n)=на n->) і 1:(9*n-1)просто змінивши 1:9n-1.
Алекс А.

Правильно я рахував \n1 байт за звичкою.
планнапус

Замість цього (" "*"_"^6*" ")^nможна використовувати " ______ "^n(так само для | |частини). 70 байт: n->print(" ______ "^n*"\n"*"| | "^n*"\n"*(" ()--() ~"^n)[1:9n-1]). (Пробіл між брусками тут не відображається)
Алекс А.

3

Завдання 1, Haskell, 17 байт

f x=(x*(x-1)/2)^2

Завдання 2, Математика, 30 байт

PrimeQ@#&&Mod[Log2[#+1],1]==0&

Завдання 3, JavaScript, 46 байт

function(x){return x.sort()[0|(x.length-1)/2]}

Завдання 5, MATLAB, 47 байт

'pneumonoultramicroscopicsilicovolcanoconiosis'

Завдання 6, Ruby, 56 байт

print Time.now.to_s[5,5]=="01-01"?"Happy New Year!":""

Завдання 7, Python, 106 байт (відступ з \t)

from random import*
s=''
while len(s)<64:
    c=unichr(randint(0x3400,0x4DB5))
    if c not in s:
        s+=c
print s

Зверніть увагу , що просто використання list(set(s))ніяк НЕ працює тут , так як це призведе до нерівномірного розподілу ймовірностей в просторі всіх можливих рядків з - за повторне впорядкування елементів списку.



@ Завдання про повторне завдання 7: Погоджено в пункті 1, виправляю кожен раз, коли у мене є можливість. Що стосується REPL, чи існує правило проти цього?
Саран

Чудово, все виправлено зараз.
Саран

Для 1, мабуть, ви можете це зробити (x*x-x)^2/4?
xnor

Прикро, функція сортування за замовчуванням JavaScript перетворює числа у рядки при порівнянні, тому вона порівнює лише першу цифру кожного числа. Тому він не вдається [2,3,10].
NinjaBearMonkey

1
У 7 можна фактично поставити if c not in s:s+=cвсе в один рядок, заощадивши кілька символів. Також 0x3400можна замінити на 13312, який на один символ коротший (і аналогічно для 0x4db5). Нарешті, це не змінить кількість символів, але якщо вам не сподобається відступ на вкладці, ви можете замість цього відкласти один пробіл.
математика

3

Завдання 1, Haskell, 15 байт

f n=(n*n-n)^2/4

Завдання 2, Юлія, 28 байт

n->(isprime(n)&&ispow2(n+1))

Завдання 3, Октава, 30 байт

@(x)sort(x)(ceil(length(x)/2))

Завдання 5, Yacas , 45 байт

pneumonoultramicroscopicsilicovolcanoconiosis

Завдання 6, Математика, 46 байт

If[DateList[][[{2,3}]]=={1,1},Happy New Year!]

Завдання 9, PARI / GP, 10 байт

(n,a)->n*a

3

Завдання 3, Кліп, 13 байт

gHk[tivt}l`sk

Інша версія:

gHkci`v``l`sk

`, Здавалося, вартість занадто багато.

Завдання 4, KSFTgolf, 16 байт

g:]2%:)-2/:;xgpc

Перекладач тут. Я не впевнений, що я роблю ... Він надрукує негабінар, а потім завершить збій.

У перекладача є помилка. Або я зможу переграти його до 12 байт за допомогою вбудованої базової конверсії (але вона працює лише з натуральними числами):

2*02-ba'Z=;x

Оригінальна версія CJam:

qi{_1&_@^-2/}h;]W%

Я спробував Піп, Страус, Кліп та Бурлеск, щоб з’ясувати, чи є езоланг із вбудованим негабінаром. Жоден з них не працював. Використовували KSFTgolf numpy, який, здавалося, мав деяку прихильну дивну поведінку, коли база негативна. Але непросто змусити це працювати з непозитивними числами.

Завдання 7, CJam, 15 байт

'䶶,DAm<>mr64<

Завдання 8, APL, 21 байт

∨/↑{⍺∧0,2∧/∨\⍵}/⌽⍞=↓⍞

Спробуйте в Інтернеті.


Lol @ "Я не впевнений, що роблю"
Алекс А.

Питання щодо цього було не дуже зрозумілим, але мій намір полягав у тому, що код для завдання 4 повинен обробляти вхід 0. Версія без вбудованої базової конверсії, здається, справляється з нею просто.
Денніс

Виправлено @Dennis Але що робити, якщо я вирішив використовувати одинарний?
jimmy23013

Використання деякого фіксованого зміщення або доповнення 2 може спрацювати. Я також прийняв би знак, який супроводжується одинарним номером.
Денніс

3

Завдання 2, маска x86, 40 байт

C7 45 FC FF FF 07 00 B9 
00 00 00 00 B8 02 00 00 
00 D3 E0 3B 45 FC 7D 03 
41 EB F1 B8 02 00 00 00
D3 E0 48 3B 45 FC 75 13

(виключаючи заголовок, MessageBox тощо) - лише відповідні байти)

include     \masm32\include\user32.inc  
includelib  \masm32\lib\user32.lib

.data
    ClassName   db "Mersenne Prime Found",0
.data?

.code
start proc
    LOCAL IsMersenne: DWORD
    mov IsMersenne, 524287 ; put number to test in this input
    mov ecx, 0
l00p:
    mov eax, 2
    shl eax, cl
    cmp eax, IsMersenne
    jge br3ak
    inc ecx
    jmp l00p
br3ak:
    mov eax,2                                                                                     
    shl eax, cl 
    dec eax
    cmp eax, IsMersenne                                                           
    jnz n0pr1me                                                              
    invoke MessageBox, 0, addr ClassName, addr ClassName, 40h
n0pr1me:
    ret
start endp
end start

Завдання 3, С, 136 байт

#include<stdio.h> 
int C(void*A,void*B){return(*(int*)A-*(int*)B);} 
main(){int S=4;int A[]={3,1,2,4};qsort(A,S,4,C);printf("%i",A[((S&1)?S:S-1)/2]);}

Компілювати за допомогою gcc -o Prime main.c


Завдання 10, С ++, 478 байт

#include<stdio.h>
#include<string.h> 
#include<stdlib.h>
void D(int Z){int L=9,i,X=0;const char*A=" ______  ";const char*B="|      | ";const char* C = " ()--() ~ ";char*P=(char*)malloc(27*Z+5);for(i=0;i<Z-1;i++){if(!i){memcpy(P,A,L);X+=L;}memcpy(&P[X],A,L);X+=L;if(i==Z-2){memcpy(&P[X],"\n",1);X++;}}for(i=0;i<Z;i++){memcpy(&P[X],B,L);X+=L;if(i==Z-1){memcpy(&P[X],"\n",1);X++;}}for(i=0;i<Z;i++){memcpy(&P[X],C,L);X+=L;if(i==Z-1)P[X-1]='\0';}printf("%s\n",P);free(P);}
main(){D(15);}

Компілювати за допомогою g++ -o Trucks main.cpp

C & C ++ можна скоротити, але це додасть помилку компілятора. Не знаю точних правил, тому я спробував залишити код без помилок компілятора.


3
Ласкаво просимо до PPCG! Попередження компілятора можна сміливо ігнорувати, якщо компілятор виробляє корисний двійковий файл.
Денніс

2
У коді гольф компілятор C попередить вас про те, що його можна додатково гольфувати, не створюючи попередження.
Комінтерн

Ігноруйте попередження - і відчувайте, е, вільне також просочити стільки пам'яті, скільки хочете. :-)
Toby Speight

3

Завдання 1, Пітон, 35 байт

lambda x:sum(_**3for _ in range(x))

Завдання 3, CJam, 9 байт

q~$_,(2/=

Завдання 4, JavaScript, 55 53 байт

function(n){s=0xAAAAAAAA;return((n+s)^s).toString(2)}

Завдання 5, Pyth, 46 байт

"pneumonoultramicroscopicsilicovolcanoconiosis

Завдання 6, C #, 65 байт

string c(){return DateTime.Now.DayOfYear<2?"Happy New Year!":"";}

2

Завдання 1, jq, 24 байти

[range(1;.)|.*.*.]|add+0

Завдання 6, PostgreSQL, 54 байти

select'Happy New Year!'where'001'=to_char(now(),'DDD')

2

Завдання 1, Cjam, 7 байт

q~,:+_*

Редагувати: Щойно помітив, що Мартін розмістив це перед мною. Я спробую щось інше ...

Завдання 3, Python, 30 байт

lambda l:sorted(l)[~-len(l)/2]

Пітон 2.

Завдання 5, ///, 45 байт

pneumonoultramicroscopicsilicovolcanoconiosis

/// просто повторюватиме щось без будь-яких /символів.

Завдання 7, Pyth, 19 байт

s>64.SmC+13312d6582

Програма. Скажіть, будь ласка, чи я придумував математику. Спробуйте тут

Завдання 9, Октава, 9 байт

@(a,n)a*n

Анонімна ручка функції. Octave автоматично робить це за допомогою матриці * скаляр.


Для завдання 7 воно повинно бути унікальним.
Малтісен

Так, pyth має .Sпереміщення, і ви можете використовувати sum замість jk.
Мальтісен

2

Я не знайшов часу, щоб спробувати їх усіх, але ось початок

Завдання 1, постійний струм, 8 байт

d1+*d*4/

Введення та вихід у верхню частину стека, згідно з dcумовами.

Завдання 5, Emacs Lisp, 46 байт

'pneumonoultramicroscopicsilicovolcanoconiosis

Зловживання правилами:

grep 'pn.*v' /usr/*/*/brit*-large

Найкраще, чим я міг керувати, розпаковуючи стиснуту форму, було 55, в Perl:

unpack("H45",'uïFVóÙ¤¼g°0Æö<¥le°°')=~y/0-9bdf/i-v/r

(символи, що не надруковуються вище, отримують пошкодження SE, але оскільки це насправді не моя відповідь, я не виправляю це)

Завдання 6, SQL, 54 байти

SELECT IF(now()LIKE'%-01-0_%','Happy New Year!','Hi');

Я вважаю перші десять днів січня "відповідними" днями для цього привітання, але ви можете налаштувати смак. now() LIKEКонструкція працює коротше витягуючи з дня на рік з DATE_FORMAT(now(),'%j').

Завдання 10, sed, 58 байт

s/./ ()--() ~/g;s/.$//;h;y/()-~/___ /;p;g;y/ ()-~/|    /;G

Введення в одинарне.


strstrгермети для підрядів, а не підрядів. Я боюся, що завдання 5 - це колгомогоров-складність, тому отримання слова зі словника може бути розумним, але це не дозволяється.
Денніс

Дякую. Я неправильно зрозумів підряд. Я зроблю альтернативне завдання 5, але це дуже нудно.
Toby Speight

У задачі 5 є кілька цікавих рішень, але поки що ніхто не розмістив короткого .
Денніс

1

Завдання 5, MarioGolf , 50 байт

Це була мова, яку я розробляв деякий час.

Поточна версія має достатню функціональність, щоб можна було запустити цю проблему.

Y|<pneumonoultramicroscopicsilicovolcanoconiosis|O

Ви можете спробувати його в Інтернеті на веб-сайті http://htmlpreview.github.io/?https://raw.githubusercontent.com/ismael-miguel/mariogolf/master/js/testpage.html#c:Y|<pneumonoultramicroscopicsilicovolcanoconiosis|O

В даний час розробка зупинена, а реалізація незавершена.

Остання фіксація відбулася 13 березня 2015 року.

Завдання 6, PHP, 37 байт

Це справді просто, і весело!

<?=date(jn)==11?'Happy New Year!':'';

Завдання 10, Javascript, 121 бай

Так, не так гольф ...

Але це робить роботу!

console.log((' ______  '.repeat(i=prompt()))+'\n'+('|      | '.repeat(i))+'\n'+(' ()--() ~'.repeat(i).replace(/~$/,'')));

Спробуй це:

Код не відображатиметься добре у фрагменті стека через нього, починаючи з "виводу. Для її компенсації були додані додаткові простори.

Оригінальний код можна без проблем виконати на консолі Chrome, а вихід буде очікуваним.


@Dennis Дякую! Я неправильно читаю завдання 5. Я все ще дивлюся на те, як я буду реалізовувати інші завдання, але мені погано провести час.
Ісмаель Мігель

1
Ви впевнені в цьому date(dM)? Тут він повертає "25 червня". (locale встановлено на en_US) Можливо, "j" і "n" слугуватимуть краще, оскільки "d" і "m" повертають значення 0,
додані

@manatwork Ви маєте рацію. Це була моя помилка. Це ви за те, що це помітили.
Ісмаїл Мігель


1

Завдання 1, Октава, 15 байт

@(n)(n^2-n)^2/4

EDIT: Я думав, що я додав це, але, здається, забув зберегти: для цього використовується той факт sum(1^3+2^3+3^3+...+n^3) = sum(1+2+3+...+n)^2 = [n*(n+1)/2]^2

Завдання 3, Javascript, 24 байти

x=>x.sort()[x.length>>1]

1

Гаразд, давайте спочатку зробимо найпростіші речі:

Завдання 5, ASP, 45 байт

pneumonoultramicroscopicsilicovolcanoconiosis

Завдання 6, JavaScript, 46 байт

/an 01/.test(Date())&&alert("Happy New Year!")

1

Завдання 1, VBA, 126 байт

Function f(n As Integer)
    Dim i As Integer
    For i = 0 To n - 1
        f = f + i ^ 3
        Next i
End Function

У мене немає поняття, як грати в VBA. Я не ввів жодного пробілу, VBA автоматично вставляє пробіли. =f(5)у комірці в Excel відобразиться 100.

Завдання 2, Октава, 32 байти

@(n)isprime(n)&~mod(log2(n+1),1)

Завдання 5, Гольфскрипт, 47 байт

"pneumonoultramicroscopicsilicovolcanoconiosis"

Завдання 9, MATLAB, 9 байт

@(A,n)A*n

Ну, це початок ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.