Dengan bilangan bulat k dan salah satu blok teks, atau larik 2d yang array dalamnya mungkin memiliki panjang yang tidak sama (yang menyerupai blok teks), putar setiap karakter atau elemen di kolom k ke atas atau ke bawah ke posisi berikutnya yang ada.
Contoh
Putar kolom ke-20 dari teks berikut (berbasis 1):
A line with more than k characters.
A longer line with more than k character.
A short line.
Rotate here: ------v--
This is long enough.
This is not enough.
Wrapping around to the first line.
Keluaran:
A line with more thtn k characters.
A longer line with aore than k character.
A short line.
Rotate here: ------m--
This is long enoughv
This is not enough.
Wrapping around to .he first line.
Memutar kolom k -th dari input yang sama di mana 35 < k <42 akan menghasilkan teks input tidak berubah.
Aturan
- Anda dapat menggunakan teks mentah, array baris, array karakter 2d, atau format apa pun yang wajar untuk mewakili data. Anda juga dapat menggunakan tipe data selain karakter.
- Jumlah nilai yang mungkin dari tipe data elemen harus minimal 20 jika panjang kode Anda bergantung padanya, jika tidak setidaknya 2. Ini bisa berupa subset dari karakter atau nilai-nilai lain yang didukung dalam tipe asli.
- Spasi dan segala jenis nilai nol hanyalah nilai normal, jika Anda mengizinkannya dalam input. Anda juga bisa mengecualikan mereka dalam jenis elemen.
- Perubahan aturan: Anda diizinkan untuk mengisi array yang lebih pendek dengan nilai default generik (seperti spasi), jika Anda lebih suka menggunakan array dengan panjang yang sama untuk menyimpan data.
- k bisa berbasis 0 atau berbasis 1. Itu dijamin berada di dalam baris terpanjang di input (menyiratkan input memiliki setidaknya satu baris non-kosong).
- Anda dapat memilih apakah itu berputar ke atas atau ke bawah.
- Entah hanya memutar satu posisi, atau rotate n posisi di mana n adalah bilangan bulat positif yang diberikan pada input.
- Kode terpendek menang.
sumber
n~¨⍨↓⍉⎕⌽@(≢¨)@⎕⍉↑⎕,¨⍨n←⊂⊂⍬
. Mungkin Anda bisa menambahkan modded↑
↓
di ekstensi Anda untuk membantu golf lebih lanjut (tapi saya tidak yakin seberapa berguna mereka).C
danI
dilokalkan agar tidak mencemari:{~∘I¨⍨↓⍉⎕⌽@(~⊢∊I←⎕INSTANCES⊢∘C)@⎕⍉↑⎕,¨⍨⎕NEW⎕FIX I←C←':Class C' ':EndClass'}
Python 2 ,
11111010999989694 byteCobalah online!
Mengambil input sebagai daftar baris dan kolom indeks-0, dan mengembalikan daftar string.
Kolom diputar hingga 1.
-11 byte, terima kasih kepada Jo King
sumber
Java 8,
107106135107 byte+29 byte untuk perbaikan bug ..
0 diindeks; berputar seperti contohnya.
Input sebagai karakter-matriks; memodifikasi char-matrix bukannya mengembalikan yang baru untuk menghemat byte.
Cobalah online.
Penjelasan:
sumber
char p=m[0][k]
- jika tidak, bukankah ini akan melempar pengecualian? Kerja bagus btw. Anda mengalahkan upaya C # saya dengan margin besar :)n
k
n
int p=0,t;
p
m[i%s][k]=(char)(p<1?t:p)
Zsh ,
94 87 78 7469 byte-7 byte dengan mengubah ke ternary aritmatika, -9 byte dengan mengubah karakter di tempat (TIL), -4 byte dengan memasukkan indeks pada stdin dan string sebagai argumen, -5 byte dengan menggunakan string sebagai ganti array untuk menyimpan karakter yang berputar.
Old Old Old OldCobalah online!Berikut adalah kunci untuk membuat jawaban ini berfungsi:
$array[0]
atau$string[0]
selalu kosong$array[n]
atau$string[n]
kosong jika n lebih besar dari panjang array / stringarray[i]=c
ataustring[i]=c
akan mengganti elemen / karakter.$[$#s<i?0:++j]
,j
ini tidak bertambah jika$#s<i
.Dalam jawaban 94 byte asli, ada masalah menarik yang saya temui terkait penggunaan
<<<
untuk mencetak. Saya harus menggunakanecho
untuk menyiasatinya:Alasannya bisa dilihat di sini:
String di sini dijalankan dalam subkulit karena mereka diberikan sebagai stdin ke program lain. Jika tidak ada program yang diberikan, secara implisit diberikan kepada
cat
. Anda dapat melihat ini dengan<<< $_
.<<< $ZSH_SUBSHELL
mirip denganecho $ZSH_SUBSHELL | cat
. Karena kita perlu kenaikanj
, kita tidak bisa dalam subkulit.sumber
R , 62 byte
Cobalah online!
Mengambil input sebagai matriks karakter dengan spasi. Putar ke atas. Semua berkat Kirill L. !
R , 74 byte
Cobalah online!
Pengajuan ini lebih dulu dari batas jatah empuk.
Mengasingkan di
substr
sini tidak akan berhasil karena kami meneleponsubstr
dansubstr<-
di baris pertama.I / O sebagai daftar garis non-empuk; berputar ke atas.
sumber
L
dalam lingkungan induk. Saya dengan senang hati akan memperbarui ke ruang-padding!C # (Visual C # Interactive Compiler) , 82 byte
Cobalah online!
Kredit ke @ ASCIIHanya untuk saran
foreach
yang menghasilkan penghematan 12 byte!-8 Bytes berkat @someone!
-1 byte terima kasih kepada @EmbodimentofIgnorance!
sumber
foreach
karena ini adalah urutan sebaliknya :(dynamic
untuk menggabungkan deklarasi dan menyimpan 2 byte (Saya belum pernah melihat ini sebelumnya!) Cobalah online!Ruby , 57 byte
Cobalah online!
Mengambil input sebagai array garis
a
. Putar teks ke bawah pada posisi berbasis 0k
. Kembali dengan memodifikasi inputa
.sumber
05AB1E , 21 byte
Pasti bisa bermain golf lagi ..
0 diindeks; input dan output keduanya sebagai daftar string.
Berputar ke bawah seperti contoh, tetapi
<
dapat diganti dengan>
untuk memutar ke atas.Cobalah online (footer bergabung dengan daftar oleh baris baru, hapus untuk melihat output daftar yang sebenarnya).
Penjelasan:
sumber
K4 , 41 byte
Larutan:
Penjelasan:
Tidak yakin jika saya melewatkan sesuatu ... 0 indeks, putar ke atas (ubah
1
ke-1
untuk untuk memutar ke bawah)sumber
Japt v2.0a0, 18 byte
Berbasis 0 dengan input & output sebagai string multi-line. Rotasi oleh 1.
Pasti ada metode yang lebih pendek!
Cobalah
sumber
6
, jawaban Anda akan melewati spasi diline with
di baris pertama dan diRotate here
di baris keempat, sedangkan sebagian besar jawaban lain akan memutar ruang itu juga.Jelly , 16 byte
Sebuah dyadic Link yang menerima daftar garis (daftar karakter yang tidak mengandung karakter baris baru) di sebelah kiri dan integer di sebelah kanan yang mengembalikan daftar garis.
Cobalah online!(footer membagi pada baris baru, memanggil Tautan, dan bergabung dengan baris baru lagi)
Bagaimana?
sumber
perl 5 (
-p
), 75 bytek adalah 0-diindeks, putar ke bawah
TIO
sumber
Perl 6 ,
3833 byteMengubah array pada tempatnya (aturan tidak diijinkan)
Cobalah online!
sumber
JavaScript (Node.js) , 52 byte
Cobalah online!
-7 byte berkat Shaggy!
Belum melihat jawaban JavaScript! Port jawaban C # saya.
sumber
Arang ,
342821 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Mengambil array string sebagai input. Diindeks 0. Sunting: Sekarang
PeekDirection
sudah diperbaiki, saya bisa memanipulasi secara langsung. Penjelasan:Cetak string input.
Lompat ke atas kolom yang akan diputar.
Ekstrak sel yang telah dicetak.
Ganti setiap sel yang dicetak dengan nilai sel sebelumnya (secara siklus). Nilai sel mudah dibaca pada saat
PeekDirection
panggilan sehingga fakta bahwaMapCommand
panggilan menulis nilai-nilai baru ke dalam sel tidak masalah.sumber
Pip
-rn
, 32 byteDiindeks 0, berputar ke bawah. Cobalah online!
Filter untuk menemukan indeks semua baris yang cukup panjang untuk berpartisipasi dalam rotasi. Kemudian lompati baris-baris itu, bertukar karakter yang sesuai pada setiap baris dengan variabel temp
s
. Mengunjungi baris pertama lagi di akhir menukar nilai boneka kembali.sumber
Jelly , 19 byte
Cobalah online!
1-diindeks. Putar ke bawah. Tautan monadik yang menggunakan daftar string Jelly yang benar (daftar daftar karakter) sebagai argumen pertama dan k sebagai argumen kedua. Spasi dilarang di input kecuali sebagai padding kanan, tetapi semua karakter lain diizinkan.
Seperti yang diterapkan pada TIO, footer membagi input string tunggal menjadi daftar string dan bantalan kanan, tetapi ini untuk kenyamanan; seperti yang saya pahami, hasil dari langkah itu adalah input yang diizinkan untuk tautan utama sesuai aturan.
sumber
GFortran , 199 byte
-20 atau lebih dengan membaca dari stdin daripada file
-14 dengan menggunakan bilangan bulat implisit untuk
i, k, n
-4 dengan menghilangkan spasi dan
::
Membutuhkan pengguna untuk memasukkan
k
dann
pada baris pertama, di manak
kolom untuk memutar, dann
jumlah baris teks. Input selanjutnya adalah baris teks yang akan diputar. Sungguh menyakitkan menulis! Fortran sangat hebat!sumber
T-SQL, 195 byte
Cobalah secara online versi ungolfed
sumber