Tantangannya di sini adalah untuk memperluas implementasi palindrome yang diberikan sebagai masukan sebagai berikut:
n > 1
dan daftarl
.
Program Anda harus palindrome daftar baik secara vertikal maupun horizontal, artinya harus terlebih dahulu palindrome daftar itu sendiri, kemudian masing-masing elemen dalam daftar setelah; atau sebaliknya. Sebelum palindromisasi, semua elemen dipastikan memiliki panjang yang sama. Tindakan palindrome kemudian dilakukan n
kali secara berurutan sampai output yang diinginkan terpenuhi. Cara termudah untuk menunjukkan hasil yang diharapkan adalah dengan menjalankan beberapa contoh:
Satu iterasi dilakukan pada [123,456,789]
:
Pertama, Anda palindromize daftar ke [123,456,789,456,123]
.
- Meskipun ini bukan palindrom jika digabungkan, ini adalah palindrom dalam hal daftar.
[a,b,c]
menjadi[a,b,c,b,a]
, jadi DAFTAR itu palindromized.
Kemudian, Anda palindromize setiap elemen daftar [12321,45654,78987,45654,12321]
.
Ini adalah bagaimana setiap iterasi dilakukan, itu pada dasarnya merupakan palindrome omnidirectional.
Diberikan n=1 and l=[123,456,789]
:
12321
45654
78987
45654
12321
Diberikan n=2 and l=[123,456,789]
123212321
456545654
789878987
456545654
123212321
456545654
789878987
456545654
123212321
Diberikan n=1 and l=[3,2,1]
:
3
2
1
2
3
Diberikan n=2 and l=["hat","mad"," a "]
:
hatahatah
madamadam
a a a a
madamadam
hatahatah
madamadam
a a a a
madamadam
hatahatah
Diberikan n=2 and l=[" 3 ","2000"," 100"]
:
3 3 3 3
2000002000002
100 00100 001
2000002000002
3 3 3 3
2000002000002
100 00100 001
2000002000002
3 3 3 3
Diberikan n=4 and l=["3 ","20","1 "]
:
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
Diberikan n=3 and l=["_|__","__|_","___|"]
:
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
Diberikan n=2 and l=["---|---","__|","___|","____|"]
:
---|-----|-----|-----|---
__| |__ __| |__
___| |___ ___| |___
____| |____ ____| |____
___| |___ ___| |___
__| |__ __| |__
---|-----|-----|-----|---
__| |__ __| |__
___| |___ ___| |___
____| |____ ____| |____
___| |___ ___| |___
__| |__ __| |__
---|-----|-----|-----|---
Aturan
n
akan selalu lebih besar dari 1.l
akan selalu memiliki lebih dari 1 elemen.- Semua elemen
l
memiliki panjang yang sama. - Ini adalah solusi terpendek kode-golf yang akan ditandai sebagai pemenang.
Jawaban:
05AB1E , 4 byte
Perhatikan bahwa jika hanya satu iterasi yang diperlukan (
n=1
), maka program akan menjadi palindromû€û
.Cobalah online
Jika mengisi input masih merupakan bagian yang diperlukan dari program (11 byte):
Saya tidak bisa menemukan cara yang lebih pendek untuk membenarkan benar. Pembenaran kiri dan pemusatan semua mudah, tetapi ini lebih lama karena beberapa alasan. Menggunakan
E
atau²
bukannyaI
juga berfungsi.sumber
Python 2 ,
7163 byteCobalah online!
Tetapkan fungsi palindrome untuk
f
, menghasilkan dan mengevaluasi pola berikut (untukn=4
)f(map(f,f(map(f,f(map(f,f(map(f,<input>))))))))
sumber
Jelly , 6 byte
Link Dyadic, atau program lengkap yang mengambil daftar dan
n
.Cobalah online!
Menggunakan kedua versi "pantulan" built-in Lynn yang fantastis.
sumber
Python 2 , 64 byte
Cobalah online!- footer mencetak setiap elemen dari daftar yang dihasilkan, satu per baris, "print cantik".
h
adalah fungsi palindomisation, ditambahkan ke input, semua elemen daftar dari yang terakhir kecuali satu, indeks -2, ke awal dalam langkah-langkah ukuran -1.f
panggilanh
dengan hasil panggilanh
pada setiap elemen pada gilirannya, berkurangn
satu dan panggilan itu sendiri hinggan
mencapai 0, pada titik manaa
adalah produk jadi.sumber
f=
untuk fungsi rekursif, suatu hari saya akan ingat.APL, 15 byte
Penjelasan:
(
...)⍣⎕⊢⎕
: baca daftar danN
sebagai input, dan jalankanN
kali:⊢,1↓⌽
: daftar, diikuti oleh ekor dari daftar terbalikZ←
: simpan fungsi ini diZ
Z¨
: dan menerapkannya ke setiap elemen daftar jugaUji:
sumber
Groovy, 66 byte
sumber
Haskell, 51 byte
Contoh penggunaan:
["123","456","789"] ? 1
->["12321","45654","78987","45654","12321"]
. Cobalah online! .(++)<*>reverse.init
membuat palindrom dari daftar,iterate(...)x
mengulanginya lagi dan lagi dan mengumpulkan hasil antara dalam daftar,!!n
mengambil elemen ke-n dari daftar ini.(%n)<$>x%n
membuat n-palindrom dari setiap elemen n-palindrome darix
.sumber
JavaScript (ES6), 87 byte
sumber
Pip , 25 byte
24 byte kode, +1 untuk
-l
bendera.Mengambil daftar sebagai argumen baris perintah dan nomor n dari stdin.Cobalah online!
Penjelasan
sumber