Belgeleri, yorumları vb. Yazarken ASCII tabloları yapmayı seviyorum. Genellikle oldukça iyi görünüyorlar, ancak her zaman daha iyi görünebileceklerini hissediyorum - özellikle UTF-8 / Unicode kutu çizim karakterlerini içerdiğinden . Bununla birlikte, bu karakterlerin kullanımı çok külfetlidir, eklemek için birkaç tuşa basmak gerekir. Senin görevin? ASCII tablolarını otomatik olarak UTF-8 / Unicode eşdeğerine dönüştürebilen bir program veya işlev yazın.
Bu meydan okuma korumalı .
Meydan okuma
Giriş dizesi olarak ASCII tablosu verilen bir program yazın, tabloyu Unicode / UTF-8 kutu çizim karakterleriyle yeniden çizilir. Özellikle, tablonun bir parçası olan karakterler aşağıdaki gibi çevrilmelidir:
(Unicode, 3 bytes each in UTF-8)
- to ─ (\u2500)
| to │ (\u2502)
= to ═ (\u2550)
and + to one of:
┌ (\u250C), ┐ (\u2510), └ (\u2514), ┘ (\u2518),
├ (\u251C), ┤ (\u2524), ┬ (\u252C), ┴ (\u2534),
┼ (\u253C)
or, if '=' on either side:
╒ (\u2552), ╕ (\u2555), ╘ (\u2558), ╛ (\u255D),
╞ (\u255E), ╡ (\u2561), ╤ (\u2564), ╧ (\u2567),
╪ (\u256A)
ayrıntılar
I / O:
- Varsayılan I / O'ya izin verilir
- Girdiyi tablo olarak bir dize veya tabloyu içeren bir dosyanın yolu da dahil olmak üzere makul herhangi bir biçimde alabilirsiniz.
- Bir dosyaya çıktı verebilir ve dosya adını ek bir bağımsız değişken olarak alabilirsiniz.
- Ancak, giriş dosyasını değiştiremezsiniz . (Gelecekteki düzenleme kolaylığı için saklanmalıdır)
Giriş:
- Her giriş satırının aynı uzunlukta olarak doldurulduğunu varsayabilirsiniz
.
- Yeni satırdan sonraki ilk karakterin tablo kenarlıklarının bir parçası olduğunu varsayamazsınız (boşluk olabileceği için).
- Tüm karakterler (tablonun bir parçası olan)
-=|
tam olarak iki karaktere ve+
hem yatay hem de dikey olarak en az bir karaktere bağlıysa, giriş geçerli bir tablo olarak kabul edilir . - Programınız, geçerli girişlerle herhangi bir hata üretmeyebilir.
- Giriş geçerli değilse, davranış tanımsızdır ve herhangi bir çıktı üretebilirsiniz.
- Giriş, kutu çizim karakterleri de dahil olmak üzere herhangi bir UTF-8 karakteri içerebilir.
Çıktı:
- Karakterlerin Herhangi
-=|+
tablosunun bir parçası olmayan gerekir olduğu gibi bırakılabilir. - Benzer şekilde, diğer tüm karakterler olduğu gibi bırakılmalıdır.
- Tek bir öndeki ve / veya sondaki yeni satıra izin verilir.
Diğer:
- Her zamanki gibi standart boşluklar yasaktır.
- Tercih ettiğiniz dilde bu sorunu çözen yerleşik bir dil varsa, onu kullanamayabilirsiniz.
- Bu, hiçbir ekleme yapılmadan bu meydan okuma için geçerli gönderimler olacak programlar, işlevler, alt rutinler veya talimatlar anlamına gelir.
- Bu meydan okumada gereken karakterlerin her biri UTF-8'de kodlandıklarında üç bayt uzunluğundadır.
Bağlı karakterler :
Bir karakter diğerine bağlanır, eğer:
- Bu olduğu
|
ve doğrudan doğruya üstünde veya altında+
veya|
; - Öyle
-
ve önce veya sonra doğrudan+
ya da-
; - Öyle
=
ve önce veya sonra doğrudan+
ya da=
; - Öyle
+
ve doğrudan üstünde veya altında ise|
ya da+
, ya da veya sonrasında önce doğrudan-
,=
ya da+
.
Bir karakter, tablonun bir parçası olan herhangi bir karaktere bağlıysa, tablonun bir parçası olarak kabul edilir. Tanım gereği, +
girdideki ilk tablonun bir parçasıdır.
Örnekler
Kopyalanabilir bir sürüm olarak burada örnekler .
Input: Output:
+------------------+ ┌──────────────────┐
| Hello+World! | │ Hello+World! │
+==================+ ╞══════════════════╡
| This is+my first | -> │ This is+my first │
|+-+ code|golf +-+| │+-+ code|golf +-+│
|+-+chall|enge! +-+| │+-+chall|enge! +-+│
+------------------+ └──────────────────┘
+===+===+===+ ╒═══╤═══╤═══╕
| 1 | 2 | 3 | │ 1 │ 2 │ 3 │
+---+===+===+===+ ┌───╪═══╪═══╪═══╡
| 1 | 1 | 2 | 3 | │ 1 │ 1 │ 2 │ 3 │
+---+---+---+---+ -> ├───┼───┼───┼───┤
| 2 | 2 | 4 | 6 | │ 2 │ 2 │ 4 │ 6 │
+---+---+---+---+ ├───┼───┼───┼───┤
|-3 |-3 |-6 |-9 | │-3 │-3 │-6 │-9 │
+===+---+---+---+ ╘═══╧───┴───┴───┘
+-----+ -> <Undefined>
+-----+ -> ┌─────┐
+-----+ └─────┘
+-----------------+
| Hello, World! |
| This is invalid | -> <Undefined>
| input |
-----------------+
++++ ┌┬┬┐
++++ -> ├┼┼┤
++++ └┴┴┘
+--+
++++ -> <Undefined>
+--+
En sonunda...
Bu kod golf , bu yüzden en az bayt miktarı kazanır. Mutlu golf!
Hello World
tabloyu kastediyorsanız, tablonun içindeki metnin değişmeden kalması gerektiğinden iç tablolar bir tablo oluşturmazlar ve bunlara düzgün bağlanmadığı için dış tablo kenarlıklarının bir parçası sayılmazlar.
+-+
alıntıların neden bağlantılı bir tablo oluşturduğu düşünülmüyor?