99 adalah bahasa pemrograman yang saya ciptakan awal minggu ini untuk tantangan saya. Tulis penerjemah untuk 99 . (Diciptakan tetapi tidak pernah perlu untuk mengimplementasikan berkat setengah lusin dari Anda.;)) Spesifikasi bahasa lengkap ada dalam tantangan itu jadi saya tidak repot untuk memposting ulang semuanya di sini.
Di 99 Anda dapat mencetak karakter ASCII individu ke stdout, tetapi karena kendala bahasa, tidak selalu jelas bagaimana cara mencetak karakter tertentu selurus mungkin.
Untuk masing-masing 128 karakter ASCII, tulislah sebuah program 99 yang tidak mengambil input dan menghasilkan karakter tunggal itu. Anda dapat mengkodekan salah satu atau semua jawaban ini dengan tangan, atau Anda dapat menulis program lain (dalam bahasa apa pun yang Anda suka) untuk menghasilkannya untuk Anda.
Jumlah karakter di masing-masing program 128 99 Anda adalah skor Anda. Skor terendah menang. Baris baru dihitung sebagai satu karakter.
Ingat, dalam 99 , hanya variabel berukuran genap seperti 9999
karakter ASCII keluaran (bilangan bulat variabel keluaran ganjil). Nilainya dibagi 9 dan kemudian diambil mod 128, sehingga nilainya tidak perlu berada dalam kisaran tertentu untuk memetakan ke karakter ASCII. Sebagai contoh, nilai-nilai internal 297, 1449, dan -855 semua sesuai dengan karakter !
karena ketika mereka dibagi dengan 9 dan diambil mod 128, mereka semua menjadi 33, yang merupakan kode karakter untuk !
.
Jika Anda membutuhkan juru bahasa untuk 99 , saya sarankan jawaban Python Mac .
Saya tahu saya katakan tantangan saya berikutnya akan lebih interaktif tetapi saya masih mengerjakan hal-hal untuk itu.
sumber
Berbagai Teknik, 42109
Untuk angka-angka, alih-alih menghitung karakter ASCII yang besar, saya hanya menghitung nilai angka itu. Anda hanya mengatakan untuk dapat menampilkan karakter, jadi ini harus tetap berfungsi.EDIT: Mengganti angka untuk menggunakan karakter ASCII, jadi abaikan itu. Saya meninggalkan kode nomor asli dalam kode Java tetapi berkomentar kalau-kalau ada yang ingin menggunakannya.
Beberapa di antaranya saya lakukan dengan tangan, kebanyakan saya hanya menulis program untuk mengetik.
Ini terdiri dari 1-4 baris masing-masing, jadi mereka cukup ramah untuk hanya menyalin dan menempelkan ke dalam program. Perlu dicatat bahwa mereka tidak bekerja secara berturut-turut karena kode yang saya hasilkan tidak mempertahankan status variabel.
Teknik yang paling umum digunakan di sini adalah sama dengan pendekatan orlp:
Versi saya berbeda dengan menggunakan beberapa case khusus dan menyusun banyak matematika menjadi hanya satu baris. Kasing khusus adalah tempat karakter dapat diwakili hanya dengan sekelompok angka 9 dan tidak ada matematika atau kode generasi saya dapat dipersingkat.
Program
Saya telah menempatkan hasilnya pada Pastebin bagi Anda yang tidak merasa ingin menjalankan program:
http://pastebin.com/Cs6WZUfb
Kode Java I digunakan:
sumber
999
pada akhirnya perlu diperbaiki.99 999\n99
(untuk menetapkan kembali999
ke99
sehingga akan mencetak sebagai karakter).Pengurangan berulang, 65280
Solusi sepele untuk dibandingkan. Terus kurangi 9 dari 99, lalu hasilkan. Contoh untuk karakter ASCII 10:
Ada 128 program. Program pertama panjangnya dua karakter (99), masing-masing setelah itu adalah 8 karakter (99 99 9 \ n) lebih panjang dari yang sebelumnya.
Program Python menghasilkan program yang dipisahkan oleh baris kosong, dan skor komputasi:
sumber