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


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.