EDIT Bazı şeyleri daha açık hale getirmek için kuralların ifadesini değiştirdim. Ayrıca, görünürdeki karışıklığın bazı noktalarını temizlemek için biraz vurgu ekledim ve bir işlev yerine bağımsız bir program yapma seçeneğini açıkça tanımladım.
Buradaki amaç, bir metin dosyası (veya dize) alan ve satırları sütunlar veya tersi olacak şekilde dönüştüren bir işlev yapmaktır.
Örnek:
Ben bir mesajım Transpoze et beni. Bunu yapabilirmisin?
Sonuçlar:
ITC ra aan mn sy apo ou ts eed xo tm .ei .t ?
Kurallar:
- Sen kullanılan tek boşluk karakterler olduğunu varsayın izin verilir
" "
ve"\n"
herhangi bir hat üzerinde hiçbir sondaki boşluk bulunmadığını söyledi. - Dosyanın ASCII olduğunu varsayabilirsiniz. Hangi bitiş çizgisini kullanmak istediğiniz size bağlıdır (CRLF veya LF). Örnekte doğru çalışması gerekir, ancak yukarıdaki varsayımları karşılayan herhangi bir girdi üzerinde de çalışması gerekir .
- Sütunları aynı hizada tutmak için boşlukların (örnekte olduğu gibi) bulunmaması gerekebilir.
- Sonucun olmamalıdır sonlarındaki boşluk var herhangi satırda .
- Son satırsonu karakteri (son satır için) isteğe bağlıdır.
- Bir işlev veya tam bir program olmalıdır. Eğer fonksiyonunuz bir string kabul ederse, sonuçları string olarak döndürmelidir. Bir dosya adını kabul ederse, sonucu kaydettiğiniz dosyanın adını döndürürsünüz. Ayrıca , STDIN'den girdi kabul eden ve doğru sonucu STDOUT'a veren tam bir program yazmanıza izin verilir ; Bunu yaparsanız, STDERR'ye hiçbir şey vermemelisiniz .
- En kısa prosedür kazanır, ancak sevdiğim herhangi bir cevabı iptal edeceğim.
Kurallara dayanarak, örnekteki çıktı, son satırın eklenip eklenmemesine bağlı olarak 53 veya 52 bayt uzunluğundadır (LF yeni satırları için).
Not: Bu özel bir gereklilik değildir, ancak işleviniz art arda iki kez çalıştırıldığında orijinali ile aynı değilse (son satırsonu farklı olabilir ve dosyanın sonundaki boş satırlar silinir), o zaman Muhtemelen kurallardan birini çiğniyor.