1. Haskell / Говнокод #28539

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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, 05 Января 2023

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

    • Но сначала придётся угадать, на каком языке он написан, что, впрочем, не вызовет трудностей у настоящего программиса.
      Ответить
    • А ты принципиально хаскель от лиспа не отличаешь?
      Ответить
      • Это разные названия одного и того же.
        Ответить
        • пиши тогдла в руби
          http://www.randomhacks.net/2005/12/03/why-ruby-is-an-acceptable-lisp/
          Ответить
          • Переведи данный код на «Руби».
            Ответить
            • 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

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

                    реально становлюсь трансфобом
                    Ответить
                    • а gt-фобом не становишься? или amp-фобом?
                      Ответить
                    • А я становлюсь фолтофобом.
                      Ответить
                      • Я ненавижу эксепшены кстати
                        Ответить
                        • Это всё потому, что в няшной блока try... не было.
                          Ответить
                          • да и славабогу. Мягкие правда уже насрали туда SEH

                            Мысль смешать деление на ноль и отсутствие файла -- очень плохая мысль
                            Ответить
                        • Я тоже. Используй sigterm. Или собачку.
                          Ответить
          • > Ruby gives you about 80% of what you want from macros

            Маловато будет
            Ответить
            • вы что думаете, я шучу что ли?

              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, лолечке тесно, видишь?

      Для меня можешь ржавого тоже впихнуть
      Ответить
    • https://twitter.com/i/status/1610948673428652034

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

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

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

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