Implement Tyrant Sort [ditutup]

8

TL; DR

  • Rekam (kiri-kanan) / panjang untuk setiap pasangan elemen berurutan. Jika 0 atau negatif, jangan rekam.
  • Setelah ini selesai, lakukan tindakan ini. Jangan perbarui quotients:
    • Increment right dan decrement left for (0, .3)
    • Hapus dari array di> =. 3
    • Cetak kedua elemen untuk> .5
  • Cetak array yang tersisa. Minta beberapa pemisah untuk dieksekusi dan tersisa.

Sekarang, ke tantangan ...

Ini adalah algoritma sorting yang memiliki kasus terburuk MULIA LINEAR WAKTU , dan di mana saja yang berani menentang nya WISDOM INFINITE akan segera DILAKSANAKAN karena adanya kejahatan keji TINGGI pengkhianatan .

The FEARLESS LEADER telah menugasi Anda dengan MISI KEHORMATAN untuk menulis program atau fungsi yang menggunakan array bilangan bulat dan mengurutkannya menggunakan algoritma pengurutan berikut:

  1. Iterasi melalui array Anda, mencerahkan setiap elemen dengan kehadiran GLORIOUS dari LEADER KETAKUTANNYA .
  2. Mintalah POLISI RAHASIA Anda memeriksa setiap pasangan dari 2 elemen berturut-turut untuk memastikan mereka BENAR-BENAR LOYAL KEPADA BANGSA MEREKA . Jika mereka tidak dipesan dengan benar, catat perbedaan antara angka-angka, dibagi dengan panjang array. Ini adalah perbedaan pendapat mereka.
  3. Pada akhir TOUR GLORIOUS Anda , buka daftar dan HUKUMAN PENGHARGAAN ILAHI PEMIMPIN YANG TAK TERLIHAT pada semua PENYANGKAL TREASONOUS sebagai berikut:
    • Untuk hasil bagi perbedaan pendapat kurang dari 0,3, mereka hanya perlu cuci otak pengingat KEMULIAAN PEMIMPIN YANG TAK TERBATAS . Kurangi elemen kiri dan tambah elemen kanan. Jangan mengubah negosiasi perbedaan pendapat.
    • Untuk hasil bagi yang berbeda dari 0,3-.5 (inklusif), mereka adalah TRAITOR dan harus dikirim ke PRISON CAMPS . Hapus dari array.
    • Untuk hasil bagi perbedaan pendapat lebih besar dari 0,5, mereka ODUMUS REBEL SCUM . Mereka harus DILAKSANAKAN SECARA PUBLIK sebagai contoh untuk HERETIK BERREASI lainnya yang mereka mungkin telah bersekutu. Hapus dari array dan kirim ke sumber berita nasional, The STDOUT Times.
  4. Array Anda sekarang SEPENUHNYA DAN SELAMANYA DIurutkan . Kirim ke The STDOUT Times sehingga mereka dapat menyanyikan VICTORY GLORIOUS Anda .

Seperti MELIHAT WAJIB kepada mereka yang terlalu bodoh untuk memahami KEMULIAAN INFINITE dari algoritma ini, ini akan digunakan untuk mengurutkan array berikut:

[1,8,6,0,4,9,3,5,7,2]
  • 1 dan 8 dipesan dengan benar.
  • 8 dan 6 tidak dipesan dengan benar, sehingga hasil bagi yang berbeda dari .2 dicatat untuk keduanya.
  • 6 dan 0 adalah sepasang pembangkang lainnya. Hasil bagi perbedaan ini adalah 0,6.
  • 0 dan 4 dipesan dengan benar.
  • 4 dan 9 dipesan dengan benar.
  • 9 dan 3 memiliki hasil bagi berbeda .6.
  • 3 dan 5 dipesan dengan benar.
  • 5 dan 7 dipesan dengan benar.
  • 7 dan 2 memiliki hasil bagi berbeda .5.

Jadi, Anda mengambil tindakan berikut atas nama LEADER KETAKUTAN :

  • Penurunan 8 hingga 7, dan kenaikan 6 hingga 7.
  • Hapus 0 dan 7 baru, dan LAKUKAN EXECUTE THEM .
  • Ikuti dengan 9 dan 3.
  • Bawa 7 dan 2 yang asli ke kamp pendidikan ulang dan pindahkan.

Ini harus menjadi siaran pers Anda, dilakukan dalam STDOUT atau apa pun yang nyaman:

Executions: 7, 0, 9, 3
[1, 7, 4, 5]

Seperti yang Anda lihat, array yang dihasilkan SEPENUHNYA DAN SELAMANYA DIHASILKAN . Mencoba menyarankan bahwa itu tidak diurutkan merupakan TREASON TINGGI .

Sekarang, sebagai DEMONSTRASI MULIA dari RESOURCES tak berujung yang diberikan oleh LEADER FEARLESS , ia telah menyediakan nya WISDOM INFINITE dalam menghasilkan kasus uji:

import random

len=random.randint(2,20)
arr=list(range(len))
random.shuffle(arr)
print(arr)

dissent=[(arr[i]-arr[i+1])/len for i in range(len-1)]
dissent.append(0) # Barrier between front and back of the array.
executions=[]
for i in range(len-1):
    if dissent[i] > 0:
        if dissent[i] < 0.3:
            arr[i] -= 1
            arr[i+1] += 1
        elif dissent[i] > 0.5:
            if dissent[i-1] <= 0.5:
                executions.append(arr[i])
            executions.append(arr[i+1])

print([arr[i] for i in range(len) if dissent[i] < 0.3 and dissent[i-1] < 0.3])
print(executions)

Cobalah Online - tekan tombol run untuk menggunakan, jika tidak, Anda hanya mendapatkan apa yang orang terakhir dapatkan.

Untuk kepentingan tatapan kosong, LEADER KETAKUTAN juga memberikan contoh kasus tepi:

Input                  Output
3,2,1,4,4,1,2,3,4,5    2,2,2,4,2,3,4,5

(Tidak ada eksekusi dalam contoh ini.)

Terakhir, Anda harus memperlakukan byte dalam program Anda sebagai pendukung utama dan meminimalkannya. Program terpendek dalam byte akan memenangkan FAVOR ETERNAL OF THE FEARLESS LEADER .

Terima kasih

Konsep untuk ini terinspirasi oleh Lazy Drop Sort , dan gaya penulisan yang digunakan sebagian besar diambil dari Kediktatoran Psikotik — kunjungi mereka jika Anda menikmati aspek parodi dari ini.

Kredit tambahan diberikan kepada semua orang yang memilih ini di Sandbox sejak awal. +8 yang diperolehnya adalah motivasi saya untuk menulis ulang untuk menghindari duplikasi.

Nissa
sumber
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
Mego
ini membutuhkan banyak renovasi. Lebih banyak tentang apa yang harus dilakukan dan lebih sedikit pada cerita. Bagaimana menurut anda ?
Muhammad Salman
@MuhammadSalman seperti saat pertama kali ditutup, saya benar-benar ingin tahu apa yang hilang dari ringkasan.
Nissa
@StephenLeppik: Tidak ada yang hilang dari ringkasan (saya cukup yakin) tapi seperti yang saya katakan, lebih sedikit cerita dan lebih banyak fakta tentang apa yang perlu dilakukan. Setidaknya itulah alasan saya memilih untuk ditunda. Yang lain mungkin memiliki alasan berbeda.
Muhammad Salman
+1 untuk ide yang menarik. -1 untuk yang tidak perlu di atas gaya penulisan. Cerita yang menarik, walaupun saya bukan penggemar mereka, bisa baik-baik saja jika mereka tidak mengurangi tantangan, tetapi saya harus membaca ulang tantangan 3 kali (bahkan dengan contoh) untuk memastikan saya tidak melewatkan apa pun . Juga di tl Anda; dr Anda kehilangan titik mengatakan jika kiri <kanan lalu perbedaan pendapat = 0. Selain itu, saya cukup yakin Anda berarti kiri minus kanan, tidak kanan minus kiri karena itu akan selalu negatif jika kanan kurang dari kiri .
PunPun1000

Jawaban:

2

Ruby , 146 135 byte

->l{e=[];i=0;l.inject{|j,k|q=(j-k)*10.0/l.size;b,c=l[i],l[i+=1];q>5&&e<<b<<c;q>0&&(l[i-1],l[i]=q<3?[b&&b-1,c&&c+1]:p);k};[l-a=[a],e-a]}

Cobalah online!

Asone Tuhid
sumber