Tantangan
Diberikan daftar bilangan bulat, perlihatkan bagaimana pengurutan gravitasi akan dilakukan.
Sortir Gravitasi
Dalam jenis gravitasi, bayangkan angka sebagai deretan tanda bintang. Kemudian, semuanya jatuh, dan baris baru akan jelas diurutkan. Mari kita lihat sebuah contoh:
[2, 7, 4, 6]
:
**
*******
****
******
-------
**
****
*******
******
-------
** | 2
**** | 4
****** | 6
******* | 7
Perhatikan bahwa ini hanya semacam gelembung paralel.
Spesifikasi Tepat
Pada setiap iterasi, mulai dari baris atas, ambil setiap tanda bintang dari baris yang tidak memiliki tanda bintang di bawahnya, dan pindahkan ke bawah satu baris. Terus lakukan itu sampai daftar diurutkan.
Memasukkan
Input akan menjadi daftar bilangan bulat yang benar-benar positif.
Keluaran
Untuk output, Anda harus menampilkan setiap langkah. Anda dapat memilih dua karakter ASCII non-spasi putih yang dapat dicetak, satu untuk menjadi "tanda bintang", dan satu untuk menjadi "tanda hubung" yang memisahkan. Baris tanda bintang harus dipisahkan dengan baris baru standar semacam (misalnya \n
atau \r\f
). Baris tanda hubung harus setidaknya lebar dari baris terluas (jika tidak, tanda bintang Anda akan jatuh terlalu jauh ke bawah!). Deretan tanda hubung di bagian paling bawah adalah opsional. Baris baru di akhir diizinkan. Ruang tambahan di setiap baris diizinkan.
Uji Kasus
input akan diwakili sebagai daftar, maka output akan terdaftar segera di bawah ini. Kasus uji dipisahkan oleh garis ganda-baru.
[4, 3, 2, 1]
****
***
**
*
----
***
** *
* *
**
----
**
* *
** *
***
----
*
**
***
****
[6, 4, 2, 5, 3, 1]
******
****
**
*****
***
*
------
****
** **
****
***
* **
***
------
**
****
*** **
* *
***
*****
------
**
***
* *
*** **
****
*****
------
**
*
***
****
******
*****
------
*
**
***
****
*****
******
[8, 4, 2, 1]
********
****
**
*
--------
****
** ****
* **
**
--------
**
* **
** ****
****
--------
*
**
****
********
Jangan ragu untuk memperbaiki kasus pengujian saya jika salah, saya membuatnya dengan tangan :)
Catatan: Jangan tampilkan daftar yang diurutkan di bagian akhir. :)
Mencetak gol
Semua program Anda akan ditulis di atas satu sama lain. Anda tidak ingin potongan program Anda jatuh, jadi pastikan Anda memiliki kode terpendek!
Jawaban:
Pyth , 27 byte
Cobalah online!
sumber
Perl 5 , 118 byte
115 byte kode +
-pla
bendera.Cobalah online!
Sepertinya agak terlalu lama. Tetapi sekali lagi, berurusan dengan string multiline dengan regex biasanya tidak mudah.
Saya menggunakan
Y
bukannya*
dan_
bukan-
.sumber
Oktaf, 104 byte
* Membutuhkan paket gambar.
Cobalah online!
Penjelasan:
sumber
Python,
203199 bytesumber
map
segera mengembalikan array sehingga Anda tidak perlu memercikkannya. Anda ingin menetapkan variabel ke'\n'.join
membantu Anda menebus kekurangansep='\n'
, meskipun, tapi itu mungkin masih lebih pendek seperti itu.Japt ,
6962 byte-7 byte terima kasih kepada @Shaggy
Mempelajari Japt dan ingin mencoba tantangan yang lebih rumit. Output dengan
x
s dan"
s bukannya tanda bintang dan tanda hubung; mengambil input sebagai array angka. Asumsikan pengurutan akan selesai dalam beberapainput.length
langkah; koreksi saya jika itu tidak pernah terjadi.Cobalah online!
Penjelasan
sumber
R ,
210205 byteCobalah online!
membaca dalam daftar dari stdin; dipisahkan oleh
+
karakter, bukan-
. Ini jauh lebih lama daripada yang saya kira. Mengambil keuntungan dari kenyataan bahwa perbandingan'*'>'+'
dievaluasiFALSE
tetapi'*'>' '
adalahTRUE
, setidaknya pada TIO (di mesin saya saya menggunakan'='
yang tampak sedikit lebih baik).Berhasil menurunkan 5 byte dari semua teknik yang saya pelajari sejak menulis jawaban asli.
Cobalah online!
sumber
Haskell ,
213211208 byteCobalah online!
sumber
Javascript, 274 byte
Cuplikan kode contoh:
sumber