Giriş
ASCII karakterlerden oluşan dikdörtgen bir bloğu saat yönünde 90 derece döndüren eksiksiz bir program yazın. Programın kendisi saat yönünde 90 derece döndürüldüğünde ASCII karakterlerden oluşan bir bloğu saat yönünün tersine 90 döndürür.
kurallar
- Birçoğunuz matrisleri döndüren veya devreten yerleşik öğeler kullanmazsınız. Örneğin, MATLAB / Octave
rot90
ve devrik operatöre'
izin verilmez. - STDIN ve STDOUT veya en yakın eşdeğerini kullanan tam bir program yazmalısınız.
- Programınız dikdörtgen şeklinde olmalı ve girdinin de dikdörtgen olduğunu varsayalım.
- Girdi ve çıktı, yeni satırla ayrılmış bir dizedir ve sondaki satırlara sahip olmayacaktır.
Kaynak kodu giriş olarak çalıştırıldığında, programınız saat yönünde 90 derece dönmelidir. Çıktı, aynı dilde girişini saat yönünün tersine 90 derece döndüren ikinci bir program olmalıdır. Döndürülen programa kaynak kodu girdi olarak verildiğinde, orijinal programın kaynak kodunu çıkarmalıdır.
Not: Her iki program da yalnızca kendi kaynak kodları için değil, herhangi bir girdi için çalışmalıdır , bu nedenle tek karakterli bir soru işaretine izin verilmez.
Misal
Diyelim ki, girişini varsayımsal bir dilde ÖrnekLang 90 derece döndüren geçerli bir program.
^f a2% 3
lk (^_^&
v
D8 $4 /
Kendisi girdi olarak çalıştırıldığında, girdisini saat yönünün tersine döndüren geçerli başka bir program çıkarır:
D l^
8 kf
$ (a
4 ^2
_%
^
/v&3
Bu ikinci program, kendisine girdi olarak verildiğinde, orijinal programı verir. Boş satırın dört boşluğa sahip olması ve ikinci ile son satır arasında, işaretlemede görüntülenemeyen bir boşluk olması gerektiğini unutmayın. Netleştirmek için:
$ examplelang program < program > rotProg
$ examplelang rotProg < rotProg > program1
$ diff -s program program1
Files program and program1 are identical
En kısa program kazanır. Standart boşluklar yasaklanmıştır.
:.+
birkaç hatta kırılamıyor?