Kesempurnaan / Ketidaksempurnaan
Wah, itu menyenangkan.
Kesempurnaan / Ketidaksempurnaan hanya lengkap jika ada angka sempurna yang tak terbatas. Jika ada, itu disebut Kesempurnaan, dan jika tidak ada, itu disebut Ketidaksempurnaan. Sampai misteri ini terpecahkan, ia memegang kedua nama.
Angka sempurna adalah angka yang jumlah pembagi-nya sama dengan angka, jadi enam adalah angka sempurna karena 1+2+3=6
.
Kesempurnaan / Ketidaksempurnaan memiliki fungsi-fungsi berikut:
Kesempurnaan / Ketidaksempurnaan berbasis tumpukan, dengan tumpukan yang diindeks nol.
Perintah:
p(x, y)
: mendorong x ke tumpukan di posisi y.
z(x, y)
: mendorong x ke tumpukan di posisi y, menghilangkan apa yang sebelumnya di posisi ke-y
r(x)
: menghapus item xth dari stack
k(x)
: mengembalikan item ke-X di tumpukan
a(x, y)
: menambahkan x dan y. Ketika digunakan dengan string, itu menempatkan mereka bersama-sama dalam urutan xy.
s(x, y)
: kurangi y dari x. dengan string, menghapus len (y) terakhir dari x
m(x, y)
: mengalikan x dan y. Jika digunakan dengan string, gandakan x kali len y.
d(x, y)
: membagi x dengan y
o(x)
: cetakan x
i(x, y)
: jika x bernilai true, maka ia menjalankan fungsi y
n()
: mengembalikan penghitung blok kode sedang dipanggil.
q()
: mengembalikan panjang tumpukan
t()
: input pengguna
e(x, y)
: Jika x adalah bilangan bulat, jika x dan y memiliki nilai yang sama, maka ini mengembalikan 1. jika y adalah string maka ia mendapatkan panjang y. jika x adalah sebuah string, maka itu mengkonversi y menjadi sebuah string dan memeriksa apakah mereka sama, dan jika mereka, mengembalikan 1. Jika tidak maka mengembalikan 0.
l(x, y)
: jika x lebih besar dari y, maka mengembalikan 1. Jika ada string, maka ia menggunakan panjang string.
b()
: menghentikan program.
c(x, y)
: menjalankan x, lalu y.
Untuk mendapatkan yang setara dengan Python and
, kalikan dua nilai bersama. Untuk or
, tambahkan nilainya, dan untuk not
, kurangi nilainya dari 1. Ini hanya berfungsi jika nilainya 1 atau 0, yang dapat dicapai dengan membagi angka dengan sendirinya.
Tipe data: bilangan bulat dan string. String dilambangkan dengan ''
, dan semua angka non-integer dibulatkan.
Sintaksis:
Kode terdiri dari fungsi bersarang dalam sepuluh {}
detik. Sebagai contoh, sebuah program yang akan mendapatkan masukan dan mencetaknya menambahkan akan: {o(a(t(), t()))}
. Di latar belakang program ada penghitung yang dimulai pada 0 dan berlanjut dengan 1 setiap kali mengeksekusi blok kode. Blok kode pertama berjalan pada 0
, dan seterusnya. Setelah sepuluh blok kode dieksekusi, yang keenam dieksekusi setiap kali penghitung mencapai angka sempurna. Anda tidak perlu memiliki semua sepuluh blok kode untuk program untuk bekerja, tetapi Anda perlu 7 jika Anda ingin membuat loop. Untuk lebih memahami bagaimana bahasa ini bekerja, menjalankan program berikut, yang mencetak meja setiap kali counter mencapai angka sempurna: {}{}{}{}{}{}{o(n())}
.
Penerjemah dapat ditemukan di sini: repl.it/GL7S/37 . Pilih 1 dan ketik kode Anda di terminal, atau rekatkan kode Anda di code.perfect
tab dan pilih 2 saat Anda menjalankan. Ini akan masuk akal ketika Anda mencobanya.
Bukti kelengkapan Turing / kurangnya kelengkapan Turing.
Menurut artikel pertukaran tumpukan rekayasa perangkat lunak ini , Turing yang lengkap harus dapat memiliki bentuk pengulangan lompatan bersyarat, dan memiliki cara untuk membaca atau menulis memori. Ia dapat membaca / menulis memori dalam bentuk stack, dan itu dapat berulang karena fakta bahwa blok kode ke-6 dieksekusi setiap kali penghitung mencapai angka sempurna. Jika ada angka sempurna dalam jumlah tak terbatas, ia dapat berulang tanpa batas dan Turing lengkap, dan sebaliknya tidak.
Penerjemah Self Bitwise Cyclic Tag yang mengambil 5 karakter, 1 atau 0, sebagai input:
{p(t(),0)}{(p(t(),0)}{p(t(),0)}{p(t(),0)}{p(t(),0)}{p(0,0)}{c(i(e(k(s(q(),k(0))),0),c(r(q()),i(l(k(0),0),z(s(k(0),1),0)))),i(e(k(s(q(),k(0))),1),c(z(a(k(0),1),0),i(e(k(q()),1),p(k(s(q(),k(0))),1)))))}
Dapat diperluas untuk mengambil sejumlah karakter sebagai input. Itu bisa mengambil input yang tak terbatas, tetapi hanya jika ada angka sempurna yang tak terbatas!