Sahneyi Ayarlamak:
En sevdiğiniz eğlenceye katılarak uzun bir günün ardından gevşeyeceğiniz için ortalama bir öğleden sonra: PPCG'de büyüleyici soruları cevaplama. Senin için iyi bir gün olmadı; Bu lanet olası Pyth programcıları her zaman en iyi cevabı almaya devam ediyorlar ve bu durum sizi öldürüyor Birdenbire yeni bir soru gönderildiğini fark ettiniz! Sen kararını verdin; bu sefer CJammers değil. Öfkeli bir şekilde, bir karakter akışı doğuran yazmaya başlarsınız; Son ürününüzün görkemli BrainFuck döngüsünün fetüsü. Siz yazın ve yazın. Daha hızlı! Daha hızlı hala! O kadar odaklandınız ki ekranınızdaki ışıkların açılıp kapanmaya başladığını bile fark etmiyorsunuz. Birdenbire, monitör yeşil renkte parlıyor, masaüstünde markalanmış bir yabancı. Kusursuz becerilerinizi kullanarakcat ~/Desktop/aliensymbol
ve bir sürü numarayla mesajlaşın! Sizin kurnaz PPCG programcısı olduğunuzda ASCII gibi göründüğünü fark edersiniz. Senin için önemi yok, sen print(chr(i) for i in file)
ve mesajı deşifre et. İlk düşünceniz: "Bunu toplulukla paylaşmalıyım!".
...
Kim düşünebilirdi ki? Uzaylılarla ilk temas kuran insanların PPCG'nin mütevazi programcıları olması. Neden biz? Belki de bunun nedeni, insan zekasının özü olduğumuzdur. Ya da belki BrainFuck yabancı bir dile ihtiyacımız kadar yakındır. Yine de, yabancılar - ultra zeki yaşamlar oldukları gibi - insan ırkını zeki olarak sınıflandırıp sınıflandırmayacaklarını test etmek istiyorlar. Zihinsel kahramanlığımızın bir testi olarak, uzaylılar bizden teknolojik olarak kültürlendiğimizi göstermek için birkaç bilgisayar programı göndermemizi istedi. Mesele şu ki, anladıkları tek insan dili sayısal ASCII!
İnsanlığın gerçek entelektüel alfa olduğunu yaratıklara göstermesine yardım edin. Onlara metin tabanlı kaynak kodlarımızı sayısal ASCII sürümlerine dönüştürecek bir komut dosyası göndermemiz gerekiyor. Ne yazık ki, az gelişmiş teknolojimizden dolayı (teşekkürler Obama), olabildiğince küçük bir çeviri programı göndermeliyiz. İyi ki PPCG ile bağlantı kurmayı seçtiler!
Meydan okuma:
Bu zorluğun temeli basittir: herhangi bir programın kaynak kodunu (veya bu konuda herhangi bir genel metin dosyasını) alacak bir program yazacak ve her satırın altında bir ASCII çevirisi ile ayrılmış bir alan çıktısı alacaksınız. Diğer bir deyişle, bir metin dosyasının girişi göz önüne alındığında, o dosyanın her satırını, ardından her satırın ASCII gösterimini içeren satırın (her biri sayı temsil ettiği karakter ile sıralanır) içeren bir satır çıkarmanız gerekir.
Bir örnek bunu büyük ölçüde açıklayacaktır. Giriş ünitesinin kaynak kodunu alarak hello world
:
#include <stdio.h>
int main() {
printf("hello, world\n");
return 0;
}
programınızın çıktısı:
# i n c l u d e < s t d i o . h >
35 105 110 99 108 117 100 101 32 60 115 116 100 105 111 46 104 62 10
10
i n t m a i n ( ) {
105 110 116 32 109 97 105 110 40 41 32 123 10
p r i n t f ( " h e l l o , w o r l d \ n " ) ;
32 32 32 32 112 114 105 110 116 102 40 34 104 101 108 108 111 44 32 119 111 114 108 100 92 110 34 41 59 10
r e t u r n 0 ;
32 32 32 32 114 101 116 117 114 110 32 48 59 10
}
125 10
Uygulama ayrıntıları:
İstediğiniz şekilde girdi almayı (açılış dosyası, komut satırı borusu, fonksiyon parametresi vb.) Almayı seçebilir ve stdout'a çıkış yapmalısınız ya da bir fonksiyondan çıkışı döndürmelisiniz.
Dikkat edilecek şeyler
- Çıktıdaki her karakter, aşağıdaki satırdaki 3 basamaklı alanın hizalanmasına izin vermek için bir '\ t' ile ayrılır (sekmenizin 4 boşluk veya daha fazlasına ayarlandığını varsayacağız).
- Yeni satırlar, geri dönüş tuşunun basıldığı satırda görüntülenir (örnekteki 10'lara dikkat edin)
- '\ T' ve '\ n' yazdırma gereksinimleri gevşek. Çıktınız, genel anlamda, göze hoş görünmeli (bu uzaylılara estetik anlamda da sahip olduğumuzu göstermemiz gerekir) ve görsel bütünlüğü korurken önceki iki noktayı bükebilirseniz affedilirsiniz.
- Son satırın sonunda yeni satır olup olmadığını varsaymayı seçebilirsiniz.
puanlama
Bu kod golf yani en kısa program kazanır. Programınız en kısa olmasa da, kullandığınız dile göre çok düzenli püf noktaları kullanıyor olsa da, sizin için birçok + 1!
İyi şanslar. İnsanlığın galaksiler arası istihbarat sıralaması omuzlarınıza dayanır.
Not: Lütfen arsa deliklerini bağışlayın. Ben bir yazar değilim : D