Teks sinusoidal

30

Sasaran: Menulis program atau fungsi yang mencetak string input dalam bentuk sinusoidal.

Sinusoid ASCII

Berikut adalah satu periode sinusoid:

         .......                                 
      ...       ...                              
    ..             ..                            
   .                 .                           
  .                   .                          
 .                     .                         
.                       .                       .
                         .                     . 
                          .                   .  
                           .                 .   
                            ..             ..    
                              ...       ...      
                                 .......         

Perhatikan bahwa ada tepat satu titik di setiap kolom.

  • Setiap karakter dalam string input akan menggantikan titik dalam bentuk di atas, dari kiri ke kanan.
  • Spasi dalam input harus dihasilkan seperti karakter normal, sebagai ganti sebuah titik.
  • Karakter awal berhubungan dengan titik paling kiri pada gambar di atas.
  • Ini hanya satu periode, input bisa lebih lama dari jumlah titik di atas.

Memasukkan

  • Input adalah string ASCII yang hanya berisi karakter antara ASCII desimal 32 (spasi) dan ASCII desimal 126 (Tilde ~).
  • Input akan selalu menjadi satu baris saja (tanpa linebreak).
  • Input dapat diambil melalui STDIN, parameter fungsi, argumen baris perintah, atau yang serupa.

Keluaran

  • Keluaran harus dicetak persis seperti dalam kasus uji yang diberikan.
  • Spasi pada garis dibolehkan sepanjang panjang garis dengan spasi tersebut tidak melebihi panjang garis terpanjang (yang memiliki karakter terakhir di atasnya).
  • Tidak ada garis depan / belakang yang diizinkan.

Uji kasus

  • Memasukkan: .................................................

Keluaran:

         .......                                 
      ...       ...                              
    ..             ..                            
   .                 .                           
  .                   .                          
 .                     .                         
.                       .                       .
                         .                     . 
                          .                   .  
                           .                 .   
                            ..             ..    
                              ...       ...      
                                 .......         
  • Memasukkan: Programming Puzzles & Code Golf Stack Exchange is a question and answer site for programming puzzle enthusiasts and code golfers. It's 100% free, no registration required.

Keluaran:

         ng Puzz                                         ion and                                         siasts                                          stratio           
      mmi       les                                   est        an                                   thu       and                                   egi       n r        
    ra              &                               qu             sw                               en              c                                r             eq      
   g                                                                 e                                               o                             o                 u     
  o                   C                           a                   r                           e                   d                           n                   i    
 r                     o                                                                         l                     e                                               r   
P                       d                       s                       s                       z                                               ,                       e  
                         e                     i                         i                     z                         g                     e                         d 
                                                                          t                   u                           o                   e                           .
                           G                 e                             e                 p                             l                 r                             
                            ol             ng                                f             g                                fe              f                              
                              f S       cha                                   or        min                                   rs.       00%                                
                                 tack Ex                                         program                                          It's 1                                   
  • Memasukkan: Short text.

Keluaran:

         t.
      tex  
    t      
   r       
  o        
 h         
S          
  • Memasukkan: The quick brown fox jumps over the lazy dog

Keluaran:

          brown                            
      ick       fox                        
    qu              j                      
                     u                     
  e                   m                    
 h                     p                   
T                       s                  

                          o                
                           v               
                            er             
                               th       dog
                                 e lazy    

Mencetak gol

Ini adalah , sehingga program atau fungsi terpendek dalam byte menang.

Fatalisasi
sumber
Inilah yang saya pikirkan
Beta Decay
Oh saya lihat memang agak mirip.
Fatalkan
Kebetulan, gelombang Anda tidak terlalu sinusoidal. (Secara alami saya mencoba menggunakan sinfungsi untuk mereproduksinya tetapi posisinya sedikit mati.)
David Z
@ DavidZ Itu tidak mengejutkan saya, saya melihat bentuk ASCII. Bisakah Anda mendapatkan sesuatu sinusoidal tanpa "celah" di kolom (yaitu tepat satu titik per kolom)?
Fatalkan
4
Saya menghabiskan beberapa menit menghibur diri dengan menggerakkan scroll bar pada test case output 2 bolak-balik sangat cepat.
mbomb007

Jawaban:

7

Pyth, 59 byte (57 karakter)

Xjb.sC.>V+R*12\ Xz\ C9*+-L12K+JsM._+6jC\཈2tP_JKlz]*dlzC9d

Demonstrasi.

Tabel pencarian biner dikodekan di dalam , yang memiliki nilai 3912. Ini dikonversi menjadi biner, memberi [1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0]. Ini diperlakukan sebagai perbedaan antara ketinggian berurutan. Dengan mendahului 6, membentuk semua awalan dan memetakan masing-masing ke jumlahnya, kuartal pertama gelombang dihasilkan.

sM._+6jC\཈2mengevaluasi [6, 7, 8, 9, 10, 10, 11, 11, 11, 12, 12, 12, 12]seperti yang dijelaskan di atas. Kemudian, kode menyatukan pada kebalikan dari string ini untuk membentuk paruh pertama dari gelombang, dan kemudian kurangi dari 12 untuk memberikan seluruh gelombang.

Kemudian, kami membentuk garis dari setiap karakter input diikuti oleh 12 spasi. Baris ini diputar ke kanan oleh parameter ketinggian gelombang yang sesuai dengan lokasi itu, dan kemudian garis ditransposisikan dan digabungkan pada baris baru.

Kemudian, kami menanggalkan garis kosong awal dan akhir. Namun, kami tidak dapat menghapus memimpin atau mengekor garis kosong yang memiliki spasi dari input. Ini diimplementasikan dengan mengganti spasi di input dengan tab ( C9), yang tidak bisa di input, menghapus garis kosong, dan mengubah tab kembali menjadi spasi.

isaacg
sumber
@FryAmTheEggman Tetap, dengan biaya 16 byte.
isaacg
12

Python 2, 156 byte

l=map(int,"654322111%08d1122345"%1);l+=[12-c for c in l]
def f(t):
 h=len(t);o=bytearray(' '*h+'\n')*13;i=0
 for c in t:o[i-~h*l[i%48]]=c;i+=1
 print o[:-1]

Penjelasan

  • Seluruh kode hanya membuat blok spasi ( o) dan mengganti spasi yang tepat dengan huruf-huruf input t.

  • Variabel lmenyimpan daftar offset dari atas. Sehingga nkarakter ke-4 tharus on line l[n].

  • Bytearray oberfungsi sebagai string yang bisa berubah, karena string tidak berubah dalam python.

  • -~hsama seperti h+1tetapi menghemat ruang karena saya tidak perlu tanda kurung.

Alex L
sumber
7

Java, 219 209 199 byte

void p(char[]s){int r=6,c;String t="";for(;r>-7;r--,t+='\n')for(c=0;c<s.length;c++)t+=(s(c%48)==r?s[c]:' ');System.out.println(t);}int s(int a){return a<4?a:a<6?4:a<9?5:a<15?6:a<24?s(24-a):-s(a-24);}

Saya masih pemula di sini, dan berharap bahwa itu sesuai dengan aturan untuk memperkenalkan sub-fungsi (ketika byte dari fungsi ini dihitung, tentu saja). Jika tidak, saya akan mencoba untuk mengubah sinfungsi menjadi beberapa pencarian array pintar ...

public class SinusText
{
    public static void main(String[] args)
    {
        SinusText s = new SinusText();
        s.p(".................................................".toCharArray());
        s.p("Programming Puzzles & Code Golf Stack Exchange is a question and answer site for programming puzzle enthusiasts and code golfers. It's 100% free, no registration required.".toCharArray());
        s.p("Short text.".toCharArray());
        s.p("The quick brown fox jumps over the lazy dog".toCharArray());
    }
    void p(char[]s){int r=6,c;String t="";for(;r>-7;r--,t+='\n')for(c=0;c<s.length;c++)t+=(s(c%48)==r?s[c]:' ');System.out.println(t);}int s(int a){return a<4?a:a<6?4:a<9?5:a<15?6:a<24?s(24-a):-s(a-24);}
}
Marco13
sumber
1
Untuk beberapa tantangan berbasis string, ia juga menyimpan jika Anda mengambil input sebagai a char[]. Di sini, itu akan menyingkirkan yang ()on lengthdan menghilangkan charAt()juga. Jika saya membacanya dengan benar, Anda juga dapat menggunakan print()daripada println()menyimpan lebih banyak pasangan.
Geobits
@ Geobits Ini adalah derajat kebebasan yang tidak saya sadari. Deskripsi tugas berbicara tentang "String", jadi saya pikir itu harus representasi "THE" String dari bahasa masing-masing. ...
Marco13
Ya, saya bertanya tentang itu pada meta beberapa waktu lalu. Berikut ini tautan untuk referensi: meta.codegolf.stackexchange.com/q/2214/14215
Geobits
Terima kasih, sekarang 209. (Mungkin saya akan mencoba memeras beberapa byte lagi nanti. Fungsi "sin" masih terlihat terlalu bertele-tele ...)
Marco13
1
Hmm, bukan perbaikan besar, tetapi Anda dapat memotong 10 dengan melakukan semuanya hal 48. Ubah akhir ...a<24?s(24-a):-s(a-24);dan menyebutnya dengan s(c%48).
Geobits
4

Perl, 222 byte

$n[$_%13].=substr$l[$_/13],$_%13,1for 0..13*(@l=map{(map{sprintf"%013b",$_}@t=(64,128,256,512,(1024)x2,(2048)x3),(4096)x7,reverse@u=(32,16,8,4,4,2,2,2),(1)x7,(reverse@u),@t)[$-++%48]=~s/./$&?$_:$"/egr}<>=~/./g);$,=$/;say@n

Membutuhkan -Euntuk say, menyimpan posisi sebagai integer dilemparkan ke angka biner dan membalik array mungkin tidak efisien byte-bijaksana. Saya juga yakin ada banyak penghematan yang harus dilakukan, jadi saya akan terus mencari-cari.

Contoh output:

$perl -E '$n[$_%13].=substr$l[$_/13],$_%13,1for 0..13*(@l=map{(map{sprintf"%013b",$_}@t=(64,128,256,512,(1024)x2,(2048)x3),(4096)x7,reverse@u=(32,16,8,4,4,2,2,2),(1)x7,(reverse@u),@t)[$-++%48]=~s/./$&?$_:$"/egr}<>=~/./g);$,=$/;say@n' <<< '.................................................'
         .......                                 
      ...       ...                              
    ..             ..                            
   .                 .                           
  .                   .                          
 .                     .                         
.                       .                       .
                         .                     . 
                          .                   .  
                           .                 .   
                            ..             ..    
                              ...       ...      
                                 .......         

$perl -E '$n[$_%13].=substr$l[$_/13],$_%13,1for 0..13*(@l=map{(map{sprintf"%013b",$_}@t=(64,128,256,512,(1024)x2,(2048)x3),(4096)x7,reverse@u=(32,16,8,4,4,2,2,2),(1)x7,(reverse@u),@t)[$-++%48]=~s/./$&?$_:$"/egr}<>=~/./g);$,=$/;say@n' <<< 'Programming Puzzles & Code Golf Stack Exchange is a question and answer site for programming puzzle enthusiasts and code golfers. It'\''s 100% free, no registration required.'
         ng Puzz                                         ion and                                         siasts                                          stratio           
      mmi       les                                   est        an                                   thu       and                                   egi       n r        
    ra              &                               qu             sw                               en              c                                r             eq      
   g                                                                 e                                               o                             o                 u     
  o                   C                           a                   r                           e                   d                           n                   i    
 r                     o                                                                         l                     e                                               r   
P                       d                       s                       s                       z                                               ,                       e  
                         e                     i                         i                     z                         g                     e                         d 
                                                                          t                   u                           o                   e                           .
                           G                 e                             e                 p                             l                 r                             
                            ol             ng                                f             g                                fe              f                              
                              f S       cha                                   or        min                                   rs.       00%                                
                                 tack Ex                                         program                                          It's 1                                   
Dom Hastings
sumber
3

JavaScript, 251 243 224 220 217

Implementasi yang benar-benar sederhana: ia menggunakan string karakter untuk mewakili posisi-y dari setiap karakter pada wave (diimbangi dengan a, yang merupakan kode ASCII 97). Itu kemudian beralih melalui semua baris yang mungkin; jika nilai-y dari baris saat ini sama dengan posisi-y pada gelombang, ia menulis karakter dari string. Ada juga pembersihan di akhir untuk menghapus baris jika ternyata benar-benar kosong.

Perhatikan bahwa output akan tampak miring di alert()jendela jika tidak menggunakan font monospace, Anda dapat mengubahnya console.log()untuk memverifikasi output benar.

s=prompt(o=[])
for(y=i=0;y<13;++y){o[i]=""
for(x=0;x<s.length;++x)o[i]+=y=="gfedccbbbaaaaaaabbbccdefghijkklllmmmmmmmlllkkjih".charCodeAt(x%48)-97?s[x]:" "
if(o[i++].trim().length<1)o.splice(--i,1)}
alert(o.join("\n"))

EDIT1: ++dan --ada.

EDIT2: Penghapusan baris kosong sekarang dilakukan dalam loop yang sama dengan yang lain, menghemat 17 karakter. Tidak perlu tanda kurung itu, untuk tambahan 2 karakter.

EDIT3: Tidak perlu mendeklarasikan bentuk gelombang sebagai variabel, menyimpan 4 karakter.

EDIT4: Seperti yang ditunjukkan oleh Dom Hastings dalam komentar, jumlah byte termasuk carriage return serta karakter baris baru, memperbarui jumlah byte untuk semua revisi untuk mengecualikan carriage return.

EDIT5: Disimpan 3 byte milik Dom Hastings. Saya belum menerapkan o.spliceperbaikan karena gagal menghapus garis kosong (setidaknya pada akhirnya).

Sean Latham
sumber
1
Kerja bagus! Beberapa tempat Anda dapat menyimpan beberapa byte lagi: Ganti: if(o[i++].trim().length<1)o.splice(--i,1)dengan o.splice(i-(t=!o[i++].match(/\s/)),t), untuk -4, s=prompt() o=[]dengan s=prompt(o=[]):, -1 dan for(y=0,i=0;y<13;++y){o[i]=""dengan for(y=i=0;y<13;++y){o[i]="", -2. Mungkin untuk menggabungkan loop Anda juga untuk menghemat lebih banyak ... Satu hal lagi, perlu dicatat juga bahwa saya hanya memiliki 220 untuk jumlah byte Anda saat ini, jadi 225 Anda mungkin windows \r\nbukan hanya \nyang saya anggap dapat Anda abaikan. (tolong koreksi saya jika saya salah) ...
Dom Hastings
Tangkapan yang bagus saat kereta kembali! Lain kali saya tidak akan terlalu mempercayai Notepad ++ :)
Sean Latham
Saya pikir saya menguranginya menjadi 166. Adakah yang bisa memverifikasi? Saya mengubah perilaku array ke log di seluruh program. saya menggunakan hubung singkat daripada pernyataan if, dan menyingkirkan tanda kurung dengan meletakkan log pada akhir yang pertama untuk loop. for(s=prompt(),y=0;y<13;y++,v.trim()&&console.log(v))for(v="",x=0;x<s.length;x++)v+=y=="gfedccbbbaaaaaaabbbccdefghijkklllmmmmmmmlllkkjih".charCodeAt(x%48)-97?s[x]:" "
Vartan
menggunakan nol palsu untuk mengganti == dengan pengurangan, 165 char for(s=prompt(y=0);y<13;y++,v.trim()&&console.log(v))for(v="",x=0;x<s.length;x++)v+="gfedccbbbaaaaaaabbbccdefghijkklllmmmmmmmlllkkjih".charCodeAt(x%48)-97-y?" ":s[x]
Vartan
Saya mengalami kesulitan menyisipkannya dari komentar saya jadi ini sedikit bit.ly/1VQgGXw 217- > 166 = 76%
Vartan
3

Matlab, 133 , 130 byte

The one liner:

s=input('');y=ceil(5.6*sin(0:pi/24:pi-.1).^.9);l=[-y y]+7;n=numel(s);t=repmat(' ',13,n);for k=1:n;t(l(mod(k-1,48)+1),k)=s(k);end;t

Dan versi yang diperluas:

function f(s)
    y=ceil(5.6*sin(0:pi/24:pi-.1).^.9);l=[-y y]+7;  %// calculate the line number for each column position
    n=numel(s);                                     %// number of character in input
    t=repmat(' ',13,n);                             %// Create a blank canvas of whitespace characters
    for k=1:n
        t(l(mod(k-1,48)+1),k)=s(k);                 %// place each input character where it should be
    end
    t                                               %// force the output display

Satu liner mengambil input dari konsol ( stdin) dan 130 byte. Versi yang diperluas menggantikan input konsol dengan definisi fungsi (+1 byte) tetapi jauh lebih nyaman digunakan untuk kasus uji dalam satu lingkaran:


Deskripsi:

Indeks garis setiap karakter dihitung selama setengah periode, kemudian dicerminkan dan digabungkan untuk memiliki periode penuh.
Kami membuat latar belakang kosong karakter spasi (panjangnya sama dengan string input. Kami menempatkan setiap karakter sesuai dengan posisinya di baris yang relevan. Jika string input lebih panjang dari satu periode, modoperator (modulo) membungkusnya sehingga kami tidak t keluar dari ikatan ketika meminta nomor baris.


Kasus cobaan:

Simpan versi fungsi textsine.mdi bawah jalur Anda, lalu jalankan:

s = {'.................................................';...
    'Programming Puzzles & Code Golf Stack Exchange is a question and answer site for programming puzzle enthusiasts and code golfers. It''s 100% free, no registration required.';...
    'Short text.';...
    'The quick brown fox jumps over the lazy dog'};

for txtcase=1:4
    textsine(s{txtcase,1})
end

akan menampilkan:

t =

         .......                                 
      ...       ...                              
    ..             ..                            
   .                 .                           
  .                   .                          
 .                     .                         
.                       .                       .
                         .                     . 
                          .                   .  
                           .                 .   
                            ..             ..    
                              ...       ...      
                                 .......         


t =

         ng Puzz                                         ion and                                         siasts                                          stratio           
      mmi       les                                   est        an                                   thu       and                                   egi       n r        
    ra              &                               qu             sw                               en              c                                r             eq      
   g                                                                 e                                               o                             o                 u     
  o                   C                           a                   r                           e                   d                           n                   i    
 r                     o                                                                         l                     e                                               r   
P                       d                       s                       s                       z                                               ,                       e  
                         e                     i                         i                     z                         g                     e                         d 
                                                                          t                   u                           o                   e                           .
                           G                 e                             e                 p                             l                 r                             
                            ol             ng                                f             g                                fe              f                              
                              f S       cha                                   or        min                                   rs.       00%                                
                                 tack Ex                                         program                                          It's 1                                   


t =

         t.
      tex  
    t      
   r       
  o        
 h         
S          








t =

          brown                            
      ick       fox                        
    qu              j                      
                     u                     
  e                   m                    
 h                     p                   
T                       s                  

                          o                
                           v               
                            er             
                               th       dog
                                 e lazy    

jika Anda ingin menguji versi satu kapal dengan masukan dari stdin, masukan Anda telah dimasukkan sebagai salah satu tunggal string, sehingga Anda harus melampirkan masukan Anda antara 'karakter. Contoh:

'Short text.'   %//   valid input
Short text.     %// INVALID input

Terima kasih Luis Mendotelah mencukur 3 byte ;-)

Hoki
sumber
@LuisMendo, terima kasih untuk 3 byte yang disimpan :-). Saya menjelaskan cara memasukkan string yang tepat sehingga yang sederhana s=input('');tetap bekerja.
Hoki
2

Scala 377 karakter

potongan pertama. mungkin bisa mendapatkan formula yang lebih baik untuk menerjemahkan xkey

(s:String)⇒s.zipWithIndex.map(t⇒(t._1,t._2,t._2%48 match{
case i if i<5⇒6-i
case 5|19⇒2
case 6|7|8|16|17|18⇒1
case i if i<16⇒0
case i if i<29⇒i%20+2
case 29|43⇒10
case 30|31|32|40|41|42⇒11
case i if i<40⇒12
case i if i>43⇒10-i%44
})).groupBy(_._3).toSeq.map{case(y,xs)⇒(""→0/:xs.sortBy(_._2)){case((p,l),(c,x,_))⇒(p+" "*(x-l-1)+c)→x}._1→y}.sortBy(_._2).map(_._1).mkString("\n")
gilad hoch
sumber
1

Common Lisp, 205 byte

(lambda(s &aux p v o)(dotimes(r 13)(setf o 0 p v v(round(*(/ 24 pi)(+(asin(-(/ r 6)1))pi))))(when p(map()(lambda(c)(princ(if(some(lambda(k)(<= p(mod k 48)(1- v)))`(,o,(- 23 o)))c" "))(incf o))s)(terpri))))

Tes

Lihat http://pastebin.com/raw.php?i=zZ520FTU

Komentar

Cetak garis keluaran demi baris, menghitung indeks dalam string yang harus dicetak menggunakan fungsi sinus terbalik asin. Outputnya tidak sama persis dengan input yang diharapkan dalam pertanyaan, tetapi karena OP mengakui bahwa output contoh bukan sinus yang sebenarnya, saya kira ini tidak apa-apa. Setidaknya, selalu ada hanya satu karakter yang ditulis untuk setiap kolom.

coredump
sumber
1

Python 2, 172 byte

Ini tidak sebagus jawaban Alex L , tapi cukup dekat. Mengambil input dari input standar dan berfungsi terbaik dalam .pyfile.

l=map(int,bin(9960000)[2:]);l+=[-c for c in l];s=6;o=[];i=9
for c in raw_input():b=[' ']*13;b[s]=c;o+=[b];s+=l[i%48];i+=1
print''.join(sum(zip(*o+['\n'*13])[::-1],())[:-1])

Saya memutuskan untuk membangun output yang ditransposisikan (setiap kolom adalah satu baris) dan kemudian mengubah hasilnya, karena dalam python transpos dari sebuah matriks adalah map(*m).

  • l: Representasi biner dari 9960000(setelah memangkas "0b"dari bin) adalah 100101111111101001000000. Ini adalah "langkah" dari gelombang sinus setiap kolom, mulai dari karakter terakhir dari titik terendah. Saya menyalin daftar ini, meniadakan setiap angka, dan menempelkannya di ujungnya sendiri untuk membentuk apa yang secara efektif merupakan turunan dari fungsi.
  • s: Ini adalah variabel yang melacak baris mana (kolom dalam transpos) karakter selanjutnya dimasukkan ke dalam.
  • o: Hasil akhir, dialihkan
  • i: Melacak periode gelombang sinus. Mulai pukul 9 karena lsedikit bergeser.

Dalam forlingkaran, saya membuat daftar 13 spasi (saya menggunakan bytearrays tetapi daftar karakter ternyata memiliki pernyataan cetak yang lebih pendek), lalu ganti skarakter ke-5 dengan karakter input. Tambahkan bke akhir o, tambahkan langkah yang sesuai s, dan kenaikan i.

Saya berharap printpernyataan itu akan sesederhana itu \n'.join(*zip(o)), tetapi tidak ada keberuntungan. zip(*o+['\n'*13])[::-1]menambahkan kolom baris baru dan kemudian membalikkan dan mentransposisi semuanya (tanpa membalikkan, gelombang sinus terbalik), sum(...,())menggabungkan tuple bersama menjadi satu tupel karakter, dan kemudian ''.join(...)menggabungkan karakter dan mencetaknya.

Hal-hal lain yang saya coba adalah membuat array spasi 12 karakter dan memasukkan karakter baru ke tempat yang sesuai, dan mengganti l+=[-c for c in l];dengan semacam matematika dengan semacam perkalian dari 1dan -1dengan hasil pengindeksan ke l, tetapi tidak ada yang bisa saya kemukakan. dengan akhirnya menjadi lebih pendek.

Alex Van Liew
sumber
0

Mathematica, 131 byte

i=[input string];c=Characters@i;l=Length@c;StringJoin@Riffle[StringJoin@@@SparseArray[Table[{7-Round[6 Sin[.13(x-1)]],x},{x,l}]->c,{13,l}," "],"\n"]

Itu 131 karakter, termasuk tiga untuk i=foo;. Itu tampaknya cara yang masuk akal untuk mengambil input; Saya bisa langsung memasukkannya ke dalam definisi cdan menyelamatkan beberapa pukulan, tetapi itu terasa tidak adil.

Ini cukup mudah - bahkan bisa dibaca. Ini membagi string menjadi daftar karakter, dan kemudian menempatkan karakter-karakter itu ke dalam array yang jarang pada posisi yang ditentukan dari Table(setiap titik dalam array tidak memberikan karakter default ke spasi). Garis-garis dirakit secara terpisah, kemudian baris baru ditaburkan di antara mereka. The StringJoin terakhir menjahit semuanya.

NB: Seperti beberapa solusi lain, ini mungkin tidak benar-benar valid karena menghasilkan sinusoid nyata daripada contoh buatan tangan (indah).

Tes:

(*i=Programming Puzzles...*)
         ng Puzz                                          on and                                          iasts                                           tration          
       mi       le                                     sti       a                                      us      and                                     is        r        
     am           s                                   e           ns                                  th            c                                 eg           eq      
    r               &                               qu              we                              en               o                               r               u     
  og                  C                                               r                                               d                            o                  ir   
 r                     o                          a                                               e                    e                          n                     e  
P                       d                       s                       si                       l                       g                                               d 
                         e                     i                          t                    zz                         o                     ,                         .
                           G                                               e                  u                            lf                 ee                           
                            o               ge                               f               p                               e               r                             
                             lf           an                                  or           g                                  rs            f                              
                                St      ch                                       p      min                                     .        0%                                
                                  ack Ex                                          rogram                                          It's 10                                  
(*i=.... ...*)
         .......                                 
       ..       ..                               
     ..           ..                             
    .               .                            
  ..                 ..                          
 .                     .                         
.                       .                       .
                         ..                    . 
                           .                  .  
                            .               ..   
                             ..           ..     
                               ...      ..       
                                  ......         
(*i= Short text.*)
         t.
       ex  
      t    
    t      
  or       
 h         
S          





(*i=The quick...*)              
          brown                            
       ck       fo                         
     ui           x                        
    q               j                      
  e                  um                    
 h                     p                   
T                       s                  
                          o                
                           v               
                            e              
                             r            g
                               the      do 
                                   lazy    
hYPotenuser
sumber