Befunge - 37 x 5 = 185 38 x 3 = 114 karakter
Befunge'nin kayan nokta desteği olmadığı için bu tam sayılarla sınırlıdır.
&v /& _ #`&# "-"$# -#< v
>~:0`!#v_:" "`! #v_:","`#^_"*"`#v_&*>
^ ># $ .# @#< >&+
açıklama
Befunge'nin en büyük ayırt edici özelliği, çoğu dil gibi doğrusal bir talimat kümesi olmak yerine; kontrolün herhangi bir yönde akabildiği tek karakterli talimatların 2d ızgarasıdır.
Birincisi &sadece ilk sayıyı girer. vVe >daha sonra ikinci satırda ana yola yönlendirme kontrolü.
~:0`!#v_
Bu, bir karakter ( ~) girer , çoğaltır ( :), yığına sıfır iter ( 0), ilk iki öğeyi ` açar ve ikincinin birinciden büyük olup olmadığını belirler ( şaşırtmak için `` ` backticks kodunu girin. ), üst öğenin ( !) doğruluğunu tersine çevirir , sonra sıfırsa sağa, aksi takdirde aşağıya doğru gider ( #v_).
Temel olarak, girdinin artık girişi -1temsil edip etmediğini kontrol eder.
># $ .# @
Giriş daha -1sonra yinelenen giriş değeri atılır ( $), yığının üst kısmı bir tamsayı ( .) olarak çıkar ve program durdurulur ( @).
:" "`! #v_
Aksi takdirde, girişin bir boşluktan küçük veya ona eşit olup olmadığını belirlemek için benzer bir işlem tekrarlanır. Eğer bir boşluksa, kontrol aşağı iner, aksi takdirde kontrol kafaları sağa.
^ ># $ .# @#<
Bir boşluksa sola ( <) yönlendirilir ; program durdurma ( @), çıkış ( .) ve sağ yönlendirme ( >) kullanılarak tümü atlanır #; ancak atılan alanı yığından kaldırmak için yürütülür. Sonunda bir sonraki çalıştırmaya ( ^) başlamak için yönlendirilir .
:","`#^_
Aynı süreci ise üzerinde bölmek için kullanılan bir boşluk olmasaydı [+, *]ya da [-, \]sağa ve yukarı sırasıyla gidiyor.
>~ "*"`#v_&*>
^ >&+
Çünkü [+, *]a +veya a olup olmadığını belirlemek için tekrar bölünür *. Eğer +aşağı yönlendirilirse, bir sonraki sayı girilir ( &) ve eklenir ( +), kontrol daha sonra etrafına sarılır ve bir sonraki karakter için ana yola yönlendirilir. Eğer *öyleyse ( &) girer ve çarpar ( *) sonra doğrudan etrafı sarar.
/& _ #`&# "-"$# -#<
Çünkü [-, \]sağdan sola başlar. #'İlk bir yol olacak şekilde onlara karakteri atlama s "-"`_bunun ise sadece belirler -ya da /. Eğer öyleyse, /input ( &) ve divide ( /) için sola devam eder . Eğer öyleyse -sağa dönüyorsa, karakterlerin atlanması için tekrar atlanır, böylece &"-"$-sayı girilir ( &) -, yığına itilen karakterin ardından atılır ( "-"$) ve ardından çıkarma ( -) hesaplanır . Kontrol daha sonra ana yola geri yönlendirilir.