Хламидомонада / Говнокод #28539 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
#!/usr/bin/guile -s
!#

(define (pt n s)
  (cond ((< n 1) 0)
        ((= n 1) 1)
        ((= s 0) 0)
        ((= s 1) 1)
        ((= s n) 1)
        ((> s n) 0)
        (else (+ (pt (- n 1) s) (pt (- n 1) (- s 1))))))

(display (pt 1 1)) ;; 1
(newline)

(display (pt 3 2)) ;; 2
(newline)

(display (pt 5 3)) ;; 6
(newline)

Лисп-загадка: угадайте, что делает этот (вышеприведённый) код.

Запостил: JloJle4Ka JloJle4Ka, (Updated )

Комментарии (35) RSS

  • Но сначала придётся угадать, на каком языке он написан, что, впрочем, не вызовет трудностей у настоящего программиса.
    Ответить
  • А ты принципиально хаскель от лиспа не отличаешь?
    Ответить
          • def pt(n, s)
              if n < 1
                0
              elsif n == 1
                1
              elsif s == 0
                0
              elsif s == 1
                1
              elsif s == n
                1
              elsif s > n
                0
              else
                pt(n - 1, s) + pt(n - 1, s - 1)
              end
            end
            
            puts pt 1, 1
            puts pt 3, 2
            puts pt 5, 3

            так что ли?
            Ответить
              • зачем тебе шебанг? У тебя всё равно MRI нету небось

                Рубокоп меня тут поправил.
                Во-первых я забыл
                # frozen_string_literal: true

                (строки в руби мутабельны по умолчанию, это тот еще багор)

                во вторых на ноль рубисты проверяют так
                elsif s.zero?

                (вопросик по конвенции это булево проперти)
                Ответить
                • > frozen_string_literal: true

                  там же тройка давно вышла, в которой уже по умолчанию должно быть
                  Ответить
                • заебали траповской пидараснёй

                  реально становлюсь трансфобом
                  Ответить
                    • >не становишься
                      ну почти стал уже
                      Ответить
                        • да и славабогу. Мягкие правда уже насрали туда SEH

                          Мысль смешать деление на ноль и отсутствие файла -- очень плохая мысль
                          Ответить
                      • Я тоже. Используй sigterm. Или собачку.
                        Ответить
          • вы что думаете, я шучу что ли?

            https://www.amazon.com/Data-Structures-Algorithms-Ruby-Hemant/dp/B0B3F2BZ9M
            https://www.amazon.co.uk/Computer-Science-Programming-Basics-Ruby/dp/1449355978

            Как вам мысля покрыващее дерево на руби реализовывать?
            Давайте такую книжку про PHP напишем?
            Будут олимпиадники-пыхаписты, главное двойные ковычки не использовать, и ereg, чтобы не тормозило
            Ответить
            • Могу год из дания угадать не глядя. Сейчас можем написать про дrustню, про PGP поздно.
              Ответить
            • > Как вам мысля покрыващее дерево на руби реализовывать?

              Пошел в вики смотреть что такое. Допустим, мы построили такое дерево по точкам в двумерном пространстве и родительские узлы выстроились правильным многоугольником. Что в таком случае произойдет, если мы будем искать соседей для точки из центра такого многоугольника? Пойдет обходить всё дерево целиком?
              Ответить
              • я не осилил тебя понять

                во-первых что такое родительские узлы? Если ты про остовное дерево, то там между двумя любыми точками всегда только один путь.

                На этой хуйне работает алгоритм Spanning Tree Радьи Перельман (он же 802.1D).

                Между двумя устройствами в одной сети ethernet должен быть только один путь, иначе кадр или придет два раза, или размножица неимоверно (если получица петля между свитчами), и поскольку TTL у него нет -- вся сеть станет раком.

                Но хочется же иметь избычточные каналы. Потому находится оставное дерево, а остальные (лишние) ветки отрубаются
                Ответить
                • БЛЯДЬ я пошел искать Cover Tree, не Spanning Tree

                  https://en.wikipedia.org/wiki/Cover_tree

                  На самом деле звучит довольно прикольно для минимизации затрат на KNN, только я уж на пейпере сломался на expansion numbers
                  Ответить
  • Инью давай добавляй уже LISP или Schema, лолечке тесно, видишь?

    Для меня можешь ржавого тоже впихнуть
    Ответить
  • Хотя сам совершенно не лиспер и даже не пробовал на нём программировать, но каждый раз, как посмотрю на этот код и посмотрю, как он улыбается мне — так сразу на душе так хорошо становится. Вот даже сейчас.

    И потому думаю, что я таки изучу Лисп (и в первую очередь (из-за этих (улыбающихся(скобочек)))).

    И мне на самом деле визуально приятен синтаксис Лиспа.
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8