Befunge - 37 x 5 = 185 38 x 3 = 114 символів
Це обмежено цілими числами, оскільки Befunge не підтримує плаваючу крапку.
&v /& _ #`&# "-"$# -#< v
>~:0`!#v_:" "`! #v_:","`#^_"*"`#v_&*>
^ ># $ .# @#< >&+
Пояснення
Найбільша відмітна риса Росії Befunge є те, що замість того, щоб бути лінійним набором інструкцій, як більшість мов; це 2d сітка інструкцій з одним символом, де управління може протікати в будь-якому напрямку.
Перший &просто вводить перше число. Елемент управління, vа >потім переспрямування на основний шлях у другому ряду.
~:0`!#v_
Це вводить символ ( ~), дублює його ( :), натискає нуль на стек ( 0), вискакує перші два елементи і визначає, чи є другий більший за перший ( ` я здивований, що ви не можете використовувати `` `для отримання задні коди. зворотного списку ), інвертує правдивість верхнього елемента ( !), а потім виходить правильно, якщо він дорівнює нулю, вниз інакше ( #v_).
В основному це перевірка, чи є вхід -1 представляє більше вводу.
># $ .# @
Якщо вхід був, -1тоді дублюється вхідне значення відкидається ( $), верхня частина стека виводиться у вигляді цілого числа ( .), а програма зупиняється ( @).
:" "`! #v_
В іншому випадку подібний процес повторюється, щоб визначити, чи вхід менший або рівний пробілу. Якщо це пробіл, то управління опускається вниз, інакше голови керують правою.
^ ># $ .# @#<
Якщо це пробіл, то він переспрямований вліво ( <); програмні зупинки ( @), виводу ( .) та правильного перенаправлення ( >) пропускаються за допомогою #; але відкидання виконується, щоб видалити простір зі стека. Нарешті його переспрямовано до початку наступного виконання ( ^).
:","`#^_
Якщо це не був пробіл, той самий процес використовується для поділу, якщо він знаходиться [+, *]в[-, \] йти вправо і вгору відповідно.
>~ "*"`#v_&*>
^ >&+
Бо [+, *]він знову розщеплений, щоб визначити, це він +чи а *. Якщо +він спрямований вниз, наступне число вводиться ( &), і вони додаються ( +), потім елемент керування обертається навколо і перенаправляється до основного шляху для наступного символу. Якщо *тоді він вводить ( &) і множиться ( *), то безпосередньо завертається.
/& _ #`&# "-"$# -#<
Бо [-, \]він починається з правого заголовка ліворуч. #«S пропустити символ після них , так що початковий шлях , "-"`_який просто визначає , буде це -чи /. Якщо це так, /воно продовжується ліворуч на введення ( &) та розділення ( /). Якщо це -тоді, він рухається праворуч, знову пропускаючи символи, щоб він виконував, в &"-"$-результаті чого число вводиться ( &), що -символ висувається на стек, потім відкидається ( "-"$), а потім вираховується віднімання ( -). Потім елемент управління перенаправляється назад до основного шляху.