Жіноча та чоловіча послідовності


20

Це питання, мабуть, складніше, ніж усі ці завдання "генерують послідовність чисел", тому що для цього потрібні ДВІ послідовності, що працюють в унісон.

Дуже сподіваємось на відповіді!

У своїй книзі " Гедель, Ешер, Бах: Вічна золота коса " Дуглас Хофштадтер має досить багато послідовностей чисел всередині, всі вони певним чином покладаються на попередній термін. Інформацію про всі послідовності див. На цій сторінці Вікіпедії .

Цікавою є одна пара послідовностей - жіночі та чоловічі послідовності, які визначені так:

для n > 0.

Ось жіноча послідовність і чоловіча послідовність .

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

Зразкові входи та виходи: Вхід: 5 Вихід:[1, 1, 2, 2, 3] [0, 0, 1, 2, 2]

Вхід: 10 Вихід:[1, 1, 2, 2, 3, 3, 4, 5, 5, 6] [0, 0, 1, 2, 2, 3, 4, 4, 5, 6]

ПРИМІТКА. Розмежування списків означає розрив рядка.

Це код-гольф, тому найкоротший код у байтах виграє. Крім того, введіть пояснення, а також свій код.

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


5
Чи можемо ми повернути пару списків із функції замість друку списків?
Згарб

Інші проблеми , пов'язані з послідовностями Хофштадтера: послідовність Q , фігура-фігура послідовність
Мартін Ендер

@ Zgarb Можна, якщо два списки знаходяться в різних рядках.
clismique

2
@DerpfacePython У парі списків немає рядків ; якщо функція повертає пару списків, ви можете їх надрукувати як завгодно. Це, як кажуть, я не є великим прихильником вимог до рядків, навіть коли друкують вихід. Напружені формати вводу-виводу - це одне з речей, яких слід уникати під час написання завдань.
Денніс

4
Для одних підходів / мов це не велика справа, але для інших це може змінити велику вагу. У C багато байтів можна зберегти, друкуючи послідовності в стовпцях, а не рядках. У Python найкоротший підхід, про який я можу придумати, - це рекурсивна лямбда, схожа на мою рекурсивну відповідь Джулії, яка повертає пару списків, але необхідність перетворити це в рядок з передачею рядків робить це набагато довше, навіть довше, ніж повна програма розміщено Sp3000. Інші підходи, такі як рекурсивне рішення, яке відкладається замість збільшення, повністю виключаються, оскільки неможливо додати новий рядок.
Денніс

Відповіді:


3

Желе , 22 20 байт

ṙṪḢạL}ṭ
çƓḤ¤Ð¡1ṫ-Ṗ€G

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

Як це працює

çƓḤ¤Ð¡1ṫ-Ṗ€G  Main link. No user arguments. Left argument defaults to 0.
   ¤          Combine the two links to the left into a niladic chain.
 Ɠ              Read an integer from STDIN.
  Ḥ             Unhalve/double it.
ç   С1       Call the helper link that many times. Return all results.
              In the first call, the left and right argument are 0 and 1 resp.
              After each iteration, the left argument is set to the return value
              and the right argument to the prior value of the left one.
       ṫ-     Tail -1; keep the last two items of the list of results.
         Ṗ€   Discard the last item of each list.
           G  Grid; format the pair of lists.


ṙṪḢạL}ṭ       Helper link. Arguments: x, y (lists)

ṙ             Rotate x k units to the left, for each k in y.
 Ṫ            Tail; extract the last rotation.
  Ḣ           Head; extract the last element.
              This essentially computes x[y[-1]] (Python notation), avoiding
              Jelly's 1-based indexing.
    L}        Yield the length of y.
   ạ          Take the absolute difference of the results to both sides.
      ṭ       Tack; append the difference to y and return the result.

5
І це та частина, де я пишаюся собою, зробивши виклик, завдяки якому Jelly використовує більше 10 байт.
clismique

13

Юлія, 52 48 байт

x->[n÷φ|(5n^2|4∈(2:3n).^2)for| =(+,-),n=1:x]

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

Фон

У шлюбних функціях On Hofstadter автор показує це

Формула F / M

де φ позначає золоте співвідношення ,

дельта / епсілон формула

і Р п позначає п - е числа Фібоначчі .

Крім того, у « Розширених проблемах та рішеннях» H-187: Фібоначчі - це квадрат , пропонувач показує це

Ідентичність Фібоначча / Лукаса

де L n позначає n- е число Лукаса , а що - навпаки - якщо

конвертувати ідентичність Фібоначчі / Лукаса

тоді n - число Фібоначчі, а m - число Лукаса.

З цього ми виводимо це

теорема дельта / епсілон

всякий раз, коли n> 0 .

Як це працює

З урахуванням введенням х , ми будуємо 2 по й матриці, де | є додаванням у першому стовпчику і відніманням у другому, і n повторює над цілими числами між 1 і x у рядках.

Перший доданок як F (n - 1), так і M (n - 1) просто n÷φ.

Обчислимо δ (n) і ε (n) , обчисливши 5n² | 4 і тестування, якщо результат належить масиву квадратів цілих чисел між 2 і 3n . Це тестує як на квадратність, так як 1 не знаходиться в діапазоні, для n> 1, якщо | - віднімання.

Нарешті ми додаємо або віднімаємо булеве значення, що випливає з 5n^2|4∈(2:3n).^2або з раніше обчисленого цілого числа.


чи можна це виразити не рекурсивно / ітеративним способом ?, що це за закрита форма?
Abr001am

Я додав пояснення.
Денніс

11

Python 2, 79 70 байт

a=0,;b=1,
exec"a,b=b,a+(len(a)-b[a[-1]],);"*~-input()*2
print b,'\n',a

Ітеративний, а не рекурсивний, бо чому б ні. У першому рядку є пробіл - якщо це не нормально, його можна виправити на додатковий байт. -9 байт завдяки @Dennis.

Ось кілька комбінованих лямбдів, які не дуже допомогли:

f=lambda n,k:n and n-f(f(n-1,k),k^1)or k
f=lambda n,k:[k][n:]or f(n-1,k)+[n-f(f(n-1,k)[-1],k^1)[-1]]

Обидва беруть nі параметр kабо 0 або 1, вказуючи чоловік / жінка. Перша лямбда повертає n-й елемент, а друга лямбда повертає перші n елементів (з експоненціальним режимом виконання).


9

MATL , 23 байти

1Oiq:"@XJth"yy0)Q)_J+hw

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

Пояснення

Це працює ітераційно. Кожна послідовність зберігається в масиві. Для кожного індексу n обчислюється новий додаток кожної послідовності та додається до відповідного масиву. Використовується forцикл з N −1 членами, де N - вхідне число.

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

Два рівняння оновлення є однаковими взаємозамінними F і M. Таким чином, код для оновлення повторно використовується, застосовуючи forцикл з двома ітераціями та замінюючи послідовності в стеку.

1        % Push 1: seed for F sequence
O        % Push 0: seed for M sequence
iq:      % Input N. Generate range [1 2 ... N-1]
"        % For each (i.e. iterate N-1 times)
  @      %   Push current index, n (starting at 1 and ending at N-1)
  XJ     %   Copy to clipboard J
  th     %   Duplicate and concatenate. This generates a length-2 array
  "      %   For each (i.e. iterate twice)
    yy   %   Duplicate top two elements, i.e. F and M sequences
    0)   %     In the *first* iteration: get last entry of M, i.e M(n-1)
    Q)   %     Add 1 and index into F. This is F(M(n-1))
    _J+  %     Negate and add n. This is n-F(M(n-1)), that is, M(n)
    h    %     Concatenate to update M
    w    %     Swap top two elements, to bring F to top.
         %     In the *second* iteration the procedure is repeated to update F,
         %     and then the top two elements are swapped to bring M to top again,
         %     ready for the next iteration of the outer loop
         %   End for implicitly
         % End for implicitly
         % Display implicitly from bottom to top: first line is F, second is M

6

J, 47 байт

f=:1:`(-m@f@<:)@.*
m=:0:`(-f@m@<:)@.*
(f,:m)@i.

Використовується рекурсивне визначення. Перші два рядки визначають дієслова fі mякі представляють жіночі та чоловічі функції, відповідно. Останній рядок - це дієслово, яке бере єдиний аргумент nі виводить перші nчлени жіночої та чоловічої послідовностей.

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

   (f,:m)@i. 5
1 1 2 2 3
0 0 1 2 2
   (f,:m)@i. 10
1 1 2 2 3 3 4 5 5 6
0 0 1 2 2 3 4 4 5 6

6

JavaScript (ES6), 75 байт

g=n=>--n?([f,m]=g(n),m=[...m,n-f[m[n-1]]],[[...f,n-m[f[n-1]]],m]):[[1],[[0]]

Я міг би зберегти 2 байти, якби мені дозволено спочатку повернути чоловічу послідовність:

g=n=>--n?([f,m]=g(n),[m=[...m,n-f[m[n-1]]],[...f,n-m[f[n-1]]]]):[[1],[[0]]

6

Haskell, 57 байт

l#s=scanl(\a b->b-l!!a)s[1..]
v=w#1
w=v#0
(<$>[v,w]).take

Приклад використання: (<$>[v,w]).take $ 5->[[1,1,2,2,3],[0,0,1,2,2]]

Хелперна функція #будує нескінченний список із початковим значенням sта списком lдля пошуку всіх подальших елементів (в індексі попереднього значення). v = w#1- жіноча і w = v#0чоловіча послідовність. В основну функцію беремо перші nелементи і vі w.


4

Python 2, 107 байт

F=lambda n:n and n-M(F(n-1))or 1
M=lambda n:n and n-F(M(n-1))
n=range(input())
print map(F,n),'\n',map(M,n)

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

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



3

Pyth, 24 байти

Мабуть, неможливо використовувати reduceдля зменшення кількості байтів.

Безпосередня реалізація.

L&b-b'ytbL?b-by'tb1'MQyM

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

Як це працює

L&b-b'ytb  defines a function y, which is actually the male sequence.

L          def male(b):
 &b            if not b: return b
   -b          else: return b-
     'ytb            female(male(b-1))


L?b-by'tb1 defines a function ', which is actually the female sequence.

L          def female(b):
 ?b            if b:
   -by'tb          return b-male(female(b-1))
         1     else: return 1


'MQ        print(female(i) for i from 0 to input)
yMQ        print(male(i) for i from 0 to input)

Чи потрібно включати анаграмоване ім’я чи ваше оригінальне ім’я до таблиці лідерів? Крім того, цей код жахливо довгий для програми Pyth.
клісмік

Як давно ви тут ... звідки ви знаєте, що я змінив ім'я? Поставте там моє нове ім’я.
Лина монашка

1
Я тут досить довго, щоб знати, що ти змінив своє ім’я.
клісмік

@DerpfacePython Бачачи, що інші відповіді майже в 4 рази довші ... Я б сказав, що моє рішення не дуже довге.
Leaky Nun

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

3

Брахілог , 65 байт

:{:1-:0re.}fL:2aw,@Nw,L:3aw
0,1.|:1-:2&:3&:?--.
0.|:1-:3&:2&:?--.

Моя спроба поєднання обох предикатів для чоловічого та жіночого в одне насправді зробила код довшим.

Ви можете використовувати такий один вкладиш, який має однакову кількість байтів:

:{:1-:0re.}fL:{0,1.|:1-:2&:3&:?--.}aw,@Nw,L:{0.|:1-:3&:2&:?--.}aw

Примітка . Це працює з транспілером Prolog, а не зі старим Java.

Пояснення

Основний предикат:

:{:1-:0re.}fL                Build a list L of integers from 0 to Input - 1
             :2aw            Apply predicate 2 to each element of L, write the resulting list
                 ,@Nw        Write a line break
                     ,L:3aw  Apply predicate 3 to each element of L, write the resulting list

Присудок 2 (жіночий):

0,1.                         If Input = 0, unify Output with 1
    |                        Else
     :1-                     Subtract 1 from Input
        :2&                  Call predicate 2 with Input - 1 as argument
           :3&               Call predicate 3 with the Output of the previous predicate 2
              :?-            Subtract Input from the Output of the previous predicate 3
                 -.          Unify the Output with the opposite of the subtraction

Присудок 3 (чоловіки):

0.                           If Input = 0, unify Output with 0
  |                          Else
   :1-                       Subtract 1 from Input
      :3&                    Call predicate 3 with Input - 1 as argument
         :2&                 Call predicate 2 with the Output of the previous predicate 3
            :?-              Subtract Input from the Output of the previous predicate 3
               -.            Unify the Output with the opposite of the subtraction

Зачекайте ... який присудок 3?
clismique

@DerpfacePython озвучується, виправляється. Також зауважте, що предикат один {:1-:0re.}використовується для створення списку діапазонів.
Фаталізувати

3

Clojure, 132 131 байт

(fn [n](loop[N 1 M[0]F[1]](if(< N n)(let[M(conj M(- N(F(peek M))))F(conj F(- N(M(peek F))))](recur(inc N)M F))(do(prn F)(prn M)))))

Просто будує послідовності ітераційно вгору від нуля до n.

Безгольова версія

(fn [n]
  (loop [N 1 M [0] F [1]]
    (if (< N n)
      (let [M (conj M (- N (F (peek M))))
            F (conj F (- N (M (peek F))))]
        (recur (inc N) M F))
      (do
        (prn F)
        (prn M)))))

Приємна відповідь, ласкаво просимо на сайт! Чи потрібний пробіл чи новий рядок? Я рахую 131 + пробільний пробіл.
DJMcMayhem

Ні, немає необхідності в пробілі пробілу. Sneaky vim додав новий рядок в кінці для підрахунку wc.
відмітка

3

Pyth, 23 байти

jCuaG-LHtPs@LGeGr1Q],1Z

Спробуйте в Інтернеті: Демонстрація

Пояснення:

jCuaG-LHtPs@LGeGr1Q],1Z

  u                ],1Z    start with G = [[1, 0]]
                           (this will be the list of F-M pairs)
  u             r1Q        for each H in [1, 2, ..., Q-1]:
              eG              take the last pair of G [F(H-1), M(H-1)]
           @LG                lookup the pairs of these values:
                              [[F(F(H-1)), M(F(H-1))], [F(M(H-1)), M(M(H-1))]]
          s                   join them:
                              [F(F(H-1)), M(F(H-1)), F(M(H-1)), M(M(H-1))]
        tP                    get rid of the first and last element:
                              [M(F(H-1)), F(M(H-1))]
     -LH                      subtract these values from H
                              [H - M(F(H-1)), H - F(M(H-1))]
   aG                         and append this new pair to G
jC                         at the end: zip G and print each list on a line

Альтернативне рішення, яке використовує функцію замість зменшення (також 23 байти):

L?>b1-LbtPsyMytb,1ZjCyM

Приємно. Справді дуже приємно.
Лина монашка

3

Рубі, 104 92 97 82 байт

f=->n,i{n>0?n-f[f[n-1,i],-i]:i>0?1:0}
->n{[1,-1].map{|k|p (0...n).map{|i|f[i,k]}}}

Редагувати: f і mтепер є однією функцією завдяки HopefullyHelpful . Я змінив другу функцію для друку fтоді m. Пробіл після pє важливим, оскільки в іншому випадку функція друкується (0...n)замість результату map.

Третя функція виводить спочатку масив перших n термінів f, а потім масив перших n доданківm

Ці функції називаються так:

> f=->n,i{n>0?n-f[f[n-1,i],-i]:i>0?1:0}
> s=->n{[1,-1].map{|k|p (0...n).map{|i|f[i,k]}}}
> s[10]
[1, 1, 2, 2, 3, 3, 4, 5, 5, 6]
[0, 0, 1, 2, 2, 3, 4, 4, 5, 6]

можна кинути р і парен. Виводити друк не потрібно. Крім того, ви можете увімкнути паролі навколо дальності.
Не те, що Чарльз

ви можете замінити 2 функції на 1, який має 2 аргументи, nіi n>0?n-f(f(n-1,i),-i):i>0?1:0
HopefullyHelpful

@HopefullyHelpful Дякую купу: D
Sherlock9

@NotthatCharles Не потрібно друкувати вихід? У Ruby, якщо я хочу, щоб цей рядок перервався між, fі mмені потрібно роздрукувати його. Інакше я просто отримую масив на кшталт[[1, 1, 2, 2, 3, 3, 4, 5, 5, 6], [0, 0, 1, 2, 2, 3, 4, 4, 5, 6]]
Sherlock9,

о, це говорить "перерив лінії". Дуже погано.
Не те, що Чарльз

3

APL (Dyalog Unicode) , 45 25 байт

Анонімна негласна функція. Вимагає ⎕IO←0, що є стандартним для багатьох систем APL.

1 0∘.{×⍵:⍵-(~⍺)∇⍺∇⍵-1⋄⍺}⍳

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

Це працює, поєднуючи F і M в єдину діадичну функцію з бульним лівим аргументом, який вибирає функцію, яку потрібно застосувати. Ми використовуємо 1 для F і 0 для M, щоб ми могли використовувати цей селектор як зворотне значення для F  (0) і M  (0). Потім ми помічаємо, що обидві функції потрібно викликати спочатку себе (на аргументі мінус один), а потім іншу функцію в результаті цього, тому спочатку повторюємось із заданим селектором, а потім із логічно запереченим селектором.

ɩ ndices; нуль через аргумент мінус один

1 0∘.{} Зовнішній (декартовий) "продукт" (але з наведеною нижче функцією замість множення), використовуючи [1,0]як ліві аргументи ( ), так і індекси як аргументи праворуч ( ):

×⍵ якщо правильний аргумент є суворо позитивним (засвічується знаком правильного аргументу):

  ⍵-1 відніміть один з правого аргументу

  ⍺∇ зателефонуйте собі, як правий аргумент, а лівий аргумент - як лівий аргумент

  (~⍺)∇ називаємо себе з цим як правий арг, а логічне заперечення лівого аргументу - як ліве аргумент

  ⍵- відніміть це від правильного аргументу і поверніть результат

 ще:

   повернути лівий аргумент


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

@Dennis Це насправді не так. Це tfn тіло. Коли я був тут новим, ngn сказав мені, що я не повинен рахувати заголовок tfn (який би був два байти, однозначне ім’я + новий рядок, так само, як ім'я вихідного файлу не зараховується, а анонімні fns дозволені Так само тут, де в заголовку є 1-char ім’я + пробіл + 1-char ім'я аргументу ( n) + плюс новий рядок.
Adám,

Що саме таке tfn?
Денніс

@Dennis Tfns - це традиційне представлення функцій APL. Складається з рядків коду з майже жодними обмеженнями dfns . Наприклад, ви можете мати правильні структури управління та вирази без результату. Рядок "0" - це заголовок, який вказує на синтаксис fn .
Адам

2

ES6, 89 85 83 байт

2 байти збережено завдяки @ Bálint

x=>{F=[n=1],M=[0];while(n<x){M.push(n-F[M[n-1]]);F.push(n-M[F[n++-1]])}return[F,M]}

Наївна реалізація.

Пояснення:

x => {
    F = [n = 1], //female and term number
    M = [0]; //male
    while (n < x) {
        M.push(n - F[M[n - 1]]); //naïve
        F.push(n - M[F[n++ - 1]]); //post-decrement means n++ acts as n in the calculation
    }
    return [F, M];
}

Думаю, ви можете зробити це функцією анонім, і замінити && - s на &
Bálint

Ви не можете, &&коротке замикання, що потрібно, але я все-таки його усунув, тому що синтаксис дужки все одно такий же короткий
лише ASCII

Тоді ви могли зробити`F = [n = 1]
Bálint

2

Математика, 69 62 байт

Завдяки Sp3000 запропонував функціональну форму, яка зберегла 14 байт.

k_~f~0=1-k
k_~f~n_:=n-f[1-k,f[k,n-1]]
Print/@Array[f,{2,#},0]&

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


2

Perl 5.10, 85 80 байт

Мех, не знаю, якщо у мене є більше ідей, щоб розіграти це ...

@a=1;@b=0;for(1..<>-1){push@a,$_-$b[$a[$_-1]];push@b,$_-$a[$b[$_-1]]}say"@a\n@b"

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

Мені довелося додати use 5.10.0Ideone для того, щоб воно прийнялоsay функцію, але вона не зараховується до кількості байтів.

Це наївна реалізація алгоритму, @aбудучи «жіночим» списком і@b «чоловічим» списком.

Перекреслений 85 все ще 85?


Пояснення, будь ласка?
клісмік

Приблизно так само, як і моя відповідь JS
ASCII лише

@DerpfacePython Це насправді наївна реалізація. :)
Пол Пікард

Я не перевіряв, але я не думаю, що вам не знадобляться дужки навколо кожного pushредактору, а також остаточна крапка з комою перед закритою дужкою.
msh210

@ msh210 Дійсно, забув про це. Врятує 5 байт загалом, дякую!
Пол Пікар

2

Java, всього 169 байт

int f(int n,int i){return n>0?n-f(f(n-1,i),-i):i>0?1:0;}void p(int n,int i){if(n>0)p(n-1,i);System.out.print(i==0?"\n":f(n,i)+" ");}void p(int n){p(n,1);p(0,0);p(n,-1);}

F (), M () 56 байт

int f(int n,int i){
    return n>0?n-f(f(n-1,i),-i):i>0?1:0;
}

рекурсивний цикл та друк 77 байт

void p(int n,int i) {
    if(n>0) {
        p(n-1,i);
    }
    System.out.print(i==0?"\n":f(n,i)+" ");
}

виведення списків у двох різних рядках 37 Байт

void p(int n) {
    p(n,1);
    p(0,0);
    p(n,-1);
}

вхід: p ( 10)
вихід:

1 1 2 2 3 3 4 5 5 6 6 7 8 8 9 9 
0 0 1 2 2 3 4 4 5 6 6 7 7 8 9 9

1

C, 166 байт

#define P printf
#define L for(i=0;i<a;i++)
f(x);m(x);i;c(a){L P("%d ",f(i));P("\n");L P("%d ",m(i));}f(x){return x==0?1:x-m(f(x-1));}m(x){return x==0?0:x-f(m(x-1));}

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

main()
{
    c(10);
}

Вихід:

1 1 2 2 3 3 4 5 5 6
0 0 1 2 2 3 4 4 5 6

Безумовно (331 байт)

#include <stdio.h>

int female(int x);
int male(int x);
int i;
int count(a){
    for(i=0;i<a;i++){
        printf("%d ",female(i));
    }
    printf("\n");
    for(i=0;i<a;i++){
        printf("%d ",male(i));
    }
}
int female (int x){
    return x==0?1:x-male(female(x-1));
}
int male(x){
    return x==0?0:x-female(male(x-1));
}
int main()
{
    count(10);
}

0

8 , 195 байт

Код

defer: M
: F dup not if 1 nip else dup n:1- recurse M n:- then ;
( dup not if 0 nip else dup n:1- recurse F n:- then ) is M
: FM n:1- dup ( F . space ) 0 rot loop cr ( M . space ) 0 rot loop cr ;

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

ok> 5 FM
1 1 2 2 3 
0 0 1 2 2 

ok> 10 FM
1 1 2 2 3 3 4 5 5 6 
0 0 1 2 2 3 4 4 5 6 

Пояснення

Цей код використовує рекурсію та відкладене слово

defer: M- Слово Mоголошено визначеним пізніше. Це відкладене слово

: F dup not if 1 nip else dup n:1- recurse M n:- then ;- Визначити F рекурсивно для генерування жіночих чисел відповідно до визначення. Зверніть увагу, що Mще не визначено

( dup not if 0 nip else dup n:1- recurse F n:- then ) is M- Визначити M рекурсивно для генерування чоловічих чисел відповідно до визначення

: FM n:1- dup ( F . space ) 0 rot loop cr ( M . space ) 0 rot loop cr ; - Слово, яке використовується для друку послідовностей жіночих та чоловічих чисел

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