1. JavaScript / Говнокод #13710

    +159

    1. 1
    try{while(confirm("The result is "+(1/prompt("a*x=b\n\nEnter a").split().join()*prompt("a*x=b\n\nEnter b").split().join())+"\n\nOnce again?"));}catch(e){}

    Запостил: Qwertiy, 31 Августа 2013

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

    • ух ёптыть блять!
      Ответить
    • отнимаем хлеб у обфускатора, нехорошо
      Ответить
      • Главное, чтобы у них не было профсоюза.
        Ответить
    • Кстати, обращаю внимание, что из этого кода нельзя ничего выкинуть (ну кроме скобок вокруг вычисляемого выражения), не поломав логику его работы :)
      Ответить
      • split, join, try, catch
        Ответить
        • Так и думал, что кто-нибудь это скажет.
          А теперь вспоминаем, что prompt при отмене возвращает null. При использовании null в матеметическом выражении он приведётся к 0, но это не надо. А вот null.split() выкинет исключение, соответственно try-catch, расположенный вне while это исключение ловит. Т. о. try-split-catch нужны для завершения цикла при нажатии отмена в prompt. Ну а join отменяет split в тех случаях, когда нажато Ok.
          Вот :D
          Ответить
          • ЗЫ. Antiduck typing. Если не плавает - следовательно, кирпич.
            Ответить
          • Ох, как всё запутано...

            В рамках сей "физики троллей" можно .split().join() на .trim() заменить для краткости.
            Или тут снова подвох?
            Ответить
        • Шпагат, склепка, пробуй, иииии... лови!
          Ответить
          • Вобщем, пестня про советских гимасток.
            Ответить
      • Это вот отсюда сложно (без глобального переписывания) split и join убрать:
        var N=10, squares = (new Array(N)).join('.').split('.').map(function(a,x){ return x*x; });
        Ответить

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