Ini adalah jenis tantangan yang byte


32

Saya harus berhenti memikirkan nama-nama lemah

Tugas Anda adalah membuat sebanyak mungkin cuplikan (program yang memiliki built-in input dan output), fungsi atau program penuh sebanyak mungkin yang mengurutkan apa pun versi bilangan bulat array bahasa Anda dalam urutan menaik, tetapi untuk setiap program, Anda hanya diizinkan untuk menggunakan karakter dalam ASCII (atau halaman kode bahasa Anda, jika itu secara langsung ditentukan bukan ASCII) yang belum pernah digunakan dalam program sebelumnya.

Ini adalah contoh jawaban (program terpisah dipisahkan oleh baris baru):

Derp
ASdFGHJKLAAA
qwEEERtyRty

Dalam hal ini (bahasa fiksi), jawaban pertama saya adalah Derp, yang habis D, e, rdan p. Pada program kedua, saya tidak diperbolehkan menggunakan karakter itu lagi, tetapi saya dapat menggunakan kembali sebanyak mungkin karakter yang saya inginkan. Sama dengan program ketiga, dan seterusnya.

Setiap program harus mengambil array bilangan bulat, jadi sesuatu seperti ini (lihat contoh input / output untuk gaya input / output yang valid):

[3 4 -2 5 7 196 -44 -2]

Dan itu harus menampilkan item dalam array sebagai array, dalam urutan naik:

[-44 -2 -2 3 4 5 7 196]

Skor Anda akan menjadi jumlah total pengiriman. Jika ada seri, bytecount terendah (jumlah byte terkecil dalam kode Anda) menang!

Aturan untuk program:

  • Semua kiriman harus berjalan dengan benar dalam satu versi bahasa (jadi Python 2 != Python 3).
  • Kiriman Anda dapat berupa cuplikan, fungsi, atau program lengkap. Anda bahkan diizinkan untuk mencampur dan mencocokkannya - namun, Anda harus mengatakan yang mana, dan memberikan tautan ke kiriman yang berfungsi.
  • Harap berikan tautan online ke semua solusi, jika memungkinkan.
  • Semua kiriman harus menggunakan larik (atau string yang dibatasi dengan karakter apa pun) sebagai input, dan menghasilkan larik yang diurutkan (dalam bentuk larik bahasa Anda atau sebagai {any character}string yang -dimodifikasi).
  • Anda tidak diperbolehkan menggunakan karakter apa pun di luar ASCII (atau halaman kode bahasa Anda).

Sebagai contoh, ini adalah input / output yang valid:

[1 2 3 4]    (Clojure style arrays)
[1, 2, 3, 4] (Python style arrays)
1 2 3 4 5    (Space-delimited - separated by spaces)
1#2#3#4#5    ("#"-delimited - separated by "#" characters)
1\n2\n3\n4\n (newline-delimited)

Spesifikasi untuk input:

  • Anda dijamin bahwa array hanya berisi bilangan bulat. Namun, mungkin ada angka negatif, dan angka dapat berulang tanpa batas.

13
Semakin banyak permainan kata-kata semakin baik!

5
Anda menyadari bahwa siapa pun yang dapat diganggu untuk memecahkan masalah ini dalam Brainfuck mendapat lenguage solusi dengan skor 128? Atau, solusi Glypho tunggal dapat mencetak skor 42.
Martin Ender

1
@ Qwerp-Derp Mungkin agak membosankan, tapi tentu bisa dilakukan. Bahkan, saya berharap I / O menjadi bagian yang paling menjengkelkan (jika Anda tidak mengizinkan bacaan masukan sebagai daftar kode karakter).
Martin Ender

1
@WheatWizard Saya hanya menghitung 128 karakter yang tersedia karena tantangannya menentukan ASCII.
Martin Ender

2
Saya memiliki 3 masalah dengan batasan bahasa. (1) Membatasi kelas bahasa yang sewenang-wenang karena mereka akan bagus dalam tantangan tidak menyenangkan. (2) kebanyakan bahasa pemrograman "Normal" seperti JavaScript (yang sudah memiliki jawaban) tidak memenuhi persyaratan, yang tentu saja bukan niat pembatasan, dan sekali lagi, tidak menyenangkan. (3) Saya pikir itu bukan persyaratan yang bisa diamati. "Fungsi spesifik" tidak terlalu dapat diamati, saya bisa berargumentasi melalui beberapa lapisan abstraksi bahwa karakter Glypho memang memiliki fungsi spesifik yang beroperasi pada serangkaian variabel tersembunyi.
Wheat Wizard

Jawaban:


15

Jelly , 10 program, 65 byte

Ṣ
¹Þ
Ụị
Œ!Ṃ
7778Ọv
Ẋ>2\S$¿
ĠFḣṪ¥@€
~Ṁ~rṀxLœ&
C»/ð+ÆNPÆfÆC_ḷ
<þḅ1‘WiþJḄ³ṫZḢ

Ada beberapa tumpang tindih yang tak terhindarkan dengan jawaban @ Lynn's Jelly . Kredit untuk ide bogosort pergi padanya.

Cobalah online! atau memverifikasi keunikan .

Bagaimana mereka bekerja

Ṣ               Main link. Argument: A (array)

Ṣ               Sort A.
¹Þ              Main link. Argument: A (array)

¹Þ              Sort A, using the identity function as the key.
Ụị              Main link. Argument: A (array)

Ụ               Grade up; yield all indices of A, sorted by their corr. values.
 ị              Index into A.
Œ!Ṃ             Main link. Argument: A (array)

Œ!              Yield all permutations of A.
  Ṃ             Minimum; yield the lexicographically smallest permutation.
7778Ọv          Main link. Argument: A (array)

7778Ọ           Unordinal; yield chr(7778) = 'Ṣ'.
     v          Evaluate with argument A.
Ẋ>2\S$¿         Main link. Argument: A (array)

      ¿         While the condition it truthy, execute the body.
 >2\S$            Condition:
     $              Combine the two links to the left into a monadic chain.
 >2\                  Perform pairwise greater-than comparison.
    S                 Sum; add the results.
                    This returns 0 iff A contains an unsorted pair of integers.
Ẋ                 Body: Shuffle A.
ĠFḣṪ¥@€         Main link. Argument: A (array)

Ġ               Group the indices of A by their sorted values.
 F              Flatten the result.
      €         Apply the link to the left to each index in the previous result, 
                calling it with the index as left argument and A as the right one.
    ¥@            Combine the two links to the left into a dyadic chain and swap
                  its arguments, so A is left one and the index i is the right one.
  ḣ               Head; take the first i elements of A.
   Ṫ              Tail; yield the last of the first i, i.e., the i-th element of A.
~Ṁ~rṀxLœ&       Main link. Argument: A (array)

~               Take the bitwise NOT of all integers in A.
 Ṁ              Take the maximum.
  ~             Take the bitwise NOT of the maximum, yielding the minimum of A.
    Ṁ           Yield the maximum of A.
   r            Range; yield [min(A), ... max(A)].
      L         Yield the length of A.
     x          Repeat each integer in the range len(A) times.
       œ&       Take the multiset-intersection of the result and A.
C»/ð+ÆNPÆfÆC_ḷ  Main link. Argument: A (array)

C               Complement; map (x -> 1-x) over A.
 »/             Reduce by dyadic maximum, yielding 1-min(A).
   ð            Begin a new, dyadic chain. Arguments: 1-min(A), A
    +           Add 1-min(A) to all elements of A, making them strictly positive.
     ÆN         For each element n of the result, yield the n-th prime number.
       P        Take the product.
        Æf      Factorize the product into prime numbers, with repetition.
          ÆC    Prime count; count the number of primes less than or equal to p,
                for each prime p in the resulting factorization.
             ḷ  Yield the left argument, 1-min(A).
            _   Subtract 1-min(A) from each prime count in the result to the left.
<þḅ1‘WiþJḄ³ṫZḢ  Main link. Argument: A (array)

<þ              Construct the less-than matrix of all pairs of elements in A.
  ḅ1            Convert each row from base 1 to integer (sum each).
    ‘           Increment. The integer at index i now counts how many elements
                of A are less than or equal to the i-th.
     W          Wrap the resulting 1D array into an array.
        J       Yield the indices of A, i.e., [1, ..., len(A)].
      iþ        Construct the index table; for each array T in the singleton array
                to the left and index j to the right, find the index of j in T.
                This yields an array of singleton arrays.
         Ḅ      Unbinary; convert each singleton from base 2 to integer, mapping
                ([x]-> x) over the array.
          ³     Yield A.
           ṫ    Tail; for each integer i in the result of `Ḅ`, create a copy of A
                without its first i-1 elements.
            Z   Zip/transpose. The first column becomes the first row.
             Ḣ  Head; yield the first row.

15

Jelly, 8 program

Ṣ                   Built-in sort.
¹Þ                  Sort-by the identity function.
Ụị                  Sort indices by values, then index into list.
Œ!Ṃ                 Smallest permutation.
7778Ọv              Eval Unicode 7778 (Ṣ).
ẊI>@-.S$$¿          Bogosort.
<;0œṡ0⁸ṁjµ/         Insertion sort.
AṀ‘¶+Ç©ṬT_©®³ċЀ®x' A terrifying hack.

Program terakhir sangat menyebalkan ...

AṀ‘¶+Ç©               Add ® = abs(max(L)) + 1 to the entire list.
                      Now it’s offset to be entirely positive.
       Ṭ              Create a binary array with 1s at these indices.
        T             Find the indices of 1s in this array.
                      The result is sorted, but offset wrong, and lacks duplicates.
         _©®          Subtract the offset, saving this list to ®.
                      Now restore the duplicates:
            ³ċЀ      Count occurences in the original list.
                ®x'   Repeat the elements of ® that many times.

Jika saya dapat menghapus œṡdari <;0œṡ0⁸ṁjµ/, ada juga satu aneh ini: ²SNr²ZFœ&. Bantuan dihargai.


1
Roots → polynomial, polynomial → rootsjenius!
Luis Mendo

1
Tampaknya urutan output terbalik . Untungnya Ugratis
Luis Mendo

Ugh, bilangan bulat negatif ... Saya akan melihat apa yang dapat saya lakukan tentang hal itu
Lynn

Saya pikir kita perlu sedikit lebih banyak, tetapi saya tidak tahu bagaimana kita bisa memperbaikinya.
Matthew Roh

@ ETHproduk Tetap, sekarang.
Lynn

14

05AB1E , skor = 6

05AB1E menggunakan pengkodean CP-1252 .

Terima kasih kepada Kevin Cruijssen untuk program 4.
Terima kasih kepada Riley untuk inspirasi untuk program 6.

Program 1

{               # sort          

Cobalah online!

Program 2

`[Ž.^]¯

`               # flatten input list to stack
 [Ž  ]          # loop until stack is empty
   .^           # add top of stack to global list in sorted order
      ¯         # push global list

Cobalah online!

Program 3

WrZŠŠŸvy†

Wr              # get minimum value in input list and reverse stack
  ZŠ            # get maximum value in input list and swap move it to bottom of stack
    Š           # move input down 2 levels of the stack
     Ÿ          # create a range from max to min
      v         # for each y in range
       y†       # move any occurrence of it in the input list to the front

Cobalah online!

Program 4

ϧ

œ               # get a list of all permutations of input
 ß              # pop the smallest

Cobalah online!

Program 5

êDgFDNè¹sUXQOFXs}}\)

ê                      # sort with duplicates removed
 Dg                    # duplicate and get length
   F                   # for N in [0 ... len-1] do
    DNè                # duplicate and get the Nth element in the unique list
       ¹s              # push input and move the Nth element to top of stack
         UX            # save it in X
           Q           # compare each element in the list against the Nth unique element
            O          # sum
             FXs}      # that many times, push X and swap it down 1 level on stack
                 }     # end outer loop
                  \    # remove the left over list of unique items
                   )   # wrap stack in a list

Cobalah online!

Program 6

©€Ý逤þ((®€Ý逤(þ(Rì

©                        # store a copy of input in register
 €Ý                      # map range[0 ... n] over list
   é                     # sort by length
    €¤                   # map get_last_element over list
      þ((                # keep only non-negative numbers
                         # now we have all positive numbers sorted
         ®€Ý逤(þ(       # do the same thing again on input 
                         # except now we only keep negative numbers
                  R      # reverse sorting for negative numbers
                   ì     # prepend the sorted negative numbers to the positive ones

Cobalah online!


ϧDapat digunakan untuk skor tambahan. Coba di sini.
Kevin Cruijssen

@KevinCruijssen: Terima kasih! Saya hanya mencari œsolusi, tetapi saya bahkan tidak tahu tentang ß:)
Emigna

Saya akan sepenuhnya jujur, saya mendapatkannya dari sini . ;)
Kevin Cruijssen

1
@Riley Kecuali saya melakukan sesuatu yang salah, itu memberikan hasil yang salah
Kevin Cruijssen

1
Apakah ada cara untuk mendapatkan ekor dan pop? €Ý逤akan bekerja jika ¤muncul nilai alih-alih jika hanya mendapatkannya.
Riley

11

Brachylog , skor =  4  5

Program 1 - Sortir acak

ṣ.↔: 1≥₎∧ | ↰

Kami mengocok dan memastikan bahwa kebalikan dari daftar tidak bertambah. Jika tidak kita coba lagi secara rekursif.

Program 2 - Jenis permutasi

p≤₁

Output permutasi pertama yang tidak menurun.

Program 3 - Built-in

Hai

Memesan.

Program 4 - Built-in

≜ᵒ

Pesan dengan label. Karena bilangan bulat dalam daftar sudah diperbaiki, ini melakukan hal yang sama seperti o.

Program 5 - Pencetakan min

g ~ kKt ~ lg ~ kK {⌋M & ~ cṪ↺Th [M] hẉTb↺c} ⁱ⁾

Berikut penjelasan untuk keburukan Alam ini:

g~kK                                K = [Input list, a variable]
    t~lg~kK                         That variable is the length of the Input list
           {                  }ⁱ⁾   Iterate length-of-the-Input times on the Input:
            ⌋M                        M is the min of the input
              &~cṪ                    Ṫ is a triplet of lists which concatenate to the input
                 Ṫ↺Th[M]              T is Ṫ cyclically permuted once ccw; [M] is
                                        the first element of T
                        hẉ            Write M followed by a new line
                          Tb↺c        Remove the first element of T (i.e. [M]), cyclically
                                        pemute T once ccw and concatenate; this is
                                        the input for the next iteration

3
Dicoret 4 masih teratur 4 :(
NoOneIsHere

2
@NoOneIsHere Saya selingkuh dan memperpanjang garis untuk menghindari itu!
Fatalkan

Rekursi ekor + bogosort. Sepertinya resep f-RecursionError: maximum call stack size exceeded
Esolanging Fruit

@ Challenger5 Tail recurion diimplementasikan dengan cukup baik di Prolog sehingga hal ini seharusnya tidak terjadi.
Fatalkan

7

JavaScript, skor 1 2

Menggandakan skor berkat @ETHproductions yang mengingatkan saya pada string yang lolos

Cuplikan 1 (21 byte, karakter \ ,-.=>289`Facehilnorstux)

Function`return this.sort\x28\x28t,h\x29=>t-h\x29`.call

Cuplikan 2 (9117 byte, karakter (+)[!])

[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+(!![]+[])[+[]]+(+(+!+[]+[+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+[+!+[]])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]+!+[]]+(+(+!+[]+[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]]+[+[]])+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+(![]+[])[+!+[]]+[[]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]([[]])+[]+(+(+!+[]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+[+[]])+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()[+!+[]+[+!+[]]]+([]+[])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[!+[]+!+[]]+(![]+[])[+!+[]]+(+((+(+!+[]+[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]]+[+[]])+[])[+!+[]]+[+[]+[+[]]+[+[]]+[+[]]+[+[]]+[+[]]+[+[]]+[+[]]+[+[]]+[+!+[]]])+[])[!+[]+!+[]]+(+(+!+[]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+[+[]])+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]

Anda dapat menguji kedua versi di konsol browser Anda. Versi pertama hanya fungsi, versi kedua adalah potongan yang membutuhkan tanda kurung dan argumen ditambahkan.

Contohnya

< {function snippet here}([1, -44, 65, -105, 12])
> [-105, -44, 1, 12, 65]

Bagaimana?

Cuplikan pertama memanggil metode pengurutan pada array yang Anda lewati. Secara default, metode sortir jenis lexicographical, yang buruk untuk bilangan bulat (terutama angka negatif multi-digit). Karena itu, kita harus meneruskannya dengan panggilan balik dalam bentuk fungsi panah yang mengambil dua elemen dan mengurangi yang terakhir dari yang sebelumnya. Bergantung pada nilai yang dihasilkan, kedua elemen disusun ulang: jika lebih kecil dari 0, aakan muncul sebelumnya b, jika lebih besar dari 0, aakan muncul setelah b, dan jika 0, kedua elemen akan berakhir bersebelahan.

Cuplikan kedua tidak lebih dari versi yang dikodekan dari cuplikan pertama dan mengambil keuntungan dari fakta bahwa dalam JavaScript, object.function()sama dengan object["function"](). Ini juga menggunakan array kosong, !operator dan casting nomor untuk menghasilkan semua jenis string, di mana karakter yang diperlukan untuk nama fungsi dapat ditemukan. Kemudian tanda kurung digunakan sekali lagi untuk mendapatkan karakter pada indeks tertentu dalam string, dan semua karakter tersebut digabungkan, menghasilkan kode JavaScript berikut:

[]["fill"]["constructor"]("return this.sort((a,b)=>a-b)")["call"]

[]["fill"]sama dengan [].fill, yang ["constructor"]merupakan Functionobjek. Kami kemudian memanggilnya dengan string (yang harus dievaluasi ketika fungsi dipanggil), yang merupakan fungsi pertama, tetapi perhatikan bahwa argumen telah diganti oleh this. Untuk mengatur nilai thisargumen, kita perlu memanggil fungsi pada fungsi ini, yaitu ["call"]. Dalam JavaScript konvensional, Anda akan menulis ini sebagai:

function _() {
    return this.sort((a,b)=>a-b);
}
_.call(argument);

Saya yakin itu mungkin untuk mendapatkan solusi tanpa tanda kurung, menggunakan backticks sebagai gantinya. Function`return a=>a.sort\x28\x28a,b\x29=>a-b\x29` misalnya, tetapi tanpa menggunakan karakter yang telah Anda gunakan
ETHproduk

Bukan itu penting, tetapi Anda mungkin bisa menyimpan sejumlah besar byte dalam potongan kedua dengan memperkenalkan 'dan melakukan misal, '('bukannya apa pun yang dihasilkan JSF sebagai char. (juga, gunakan fdan tsebagai vars bukan adan b, bsecara harfiah biaya sekitar 3000 karakter)
ETHproduksi

7

V , skor 3 , 4

Ini adalah tantangan yang sangat menyenangkan! Untungnya, vim memiliki fungsi "sort" bawaan, jika tidak ini pada dasarnya tidak mungkin. Sayangnya, karena V / vim berbasis string maka perlu argumen untuk mengurutkan berdasarkan nilai numerik. Jadi saya menelepon

  • Urutkan berdasarkan nilai numerik n,

  • Urutkan berdasarkan nilai heksadesimal x, dan

  • Urutkan berdasarkan nilai floating point f

Catatan kecil: Ketika saya menulis sesuatu seperti <esc>atau <C-r>, ini sebenarnya adalah byte tunggal. Ini mewakili karakter yang tidak diinginkan, dan karena V sayangnya sangat bergantung pada karakter yang tidak dicetak, metode ini membuat semuanya lebih mudah. TIO link memiliki -vbendera, yang membuat penerjemah V membaca ini seolah-olah mereka adalah karakter yang mereka wakili.

Program 1, 2 byte

ún

Cobalah online!

Ini memanggil fungsi sortir khusus V.

Program 2, 10 byte

Qsor x
vi

Ini hanya memanggil 'sortir' secara langsung. Satu-satunya hal yang menarik tentang ini adalah kita melakukannya dari exmode, yang merupakan mode aneh yang mengemulasi editor teks 'ex', kakek buyut buyut V. viadalah jalan pintas untuk visual, perintah yang digunakan untuk meninggalkan mode ex. Ini membutuhkan baris baru tambahan.

Cobalah online!

Program 3, 14 byte

OSOR X<esc>V~DJ:<C-r>"

Cobalah online!

Baiklah, disinilah penjelasannya mulai sedikit aneh. Jika kita dapat membangun teks sor x, kita dapat menghapusnya dan memasukkannya ke dalam perintah saat ini dengan <C-r><register-name>. Jadi kita akan memasukkannya huruf besar.

O                       " Open a newline above the current line, and enter insert mode
 SOR X                  " From insert mode, enter 'SOR X'
      <esc>             " Leave insert mode
           V            " Select this whole line
            ~           " And toggle the case of every selected character ('u' would also work here)
             D          " Delete this line (into register '"')
              J         " Get rid of a newline
               :        " Enter command-line mode
                <C-r>"  " Insert register '"'
                        " Implicitly hit enter, running the 'sor x' command
                        " Implicitly print the buffer

Program 4, 19 byte

YPC<C-v>58fbe a<C-c>g?_dd@1

Cobalah online!

Dan di sinilah penjelasannya menjadi sangat aneh. Mirip dengan terakhir kali, kami akan membangun perintah dalam mode normal sehingga kami dapat menggunakan kunci yang berbeda.

YP                          " Create a copy of this line up one line. This is mostly so that we have a line to work with without messing with the numbers.
  C                         " Delete this line and enter insert mode
   <C-v>58                  " Insert ASCII '58' (which is ':')
          fbe a             " Insert 'fbe a'
               <C-c>        " Pretty much equivalent to <esc>
                    g?_     " ROT13 this line. Now the line is ':sor n'
                       dd   " Delete this whole line
                         @1 " And run it as if typed

6

CJam, skor 4

Program 1: Built-in

$

Program 2: Built-in Eval'ed

36c~

36 adalah nilai ASCII dari $.

Program 3: Urutan Permutasi

e!0=

e!     e# Find unique permutations of the input
  0=   e# Take the first one, which happens to be in sorted order

Program 4: Nilai Min

[{__)\;\{_@_@<{\}&;}*^{1m<}{)\}?}h;]

Penjelasan tentang keburukan yang tidak wajar ini:

[             e# Begin working in an array
{             e# Do this block while the TOS is truthy (doesn't pop)
 __           e#  Duplicate TOS twice (the array)
 )\;          e#  Take the last element of the array
 \            e#  Swap top two elements, bringing the other array copy to the top
 {            e#  Reduce the array using this block
  _@_@<{\}&;  e#   The minimum of two values (e was already used, so can't use e<)
 }*           e#  (result is the minimum value from the array)
 ^            e#  Bitwise XOR of last element with minimum element;
              e#   if the numbers are the same, result is 0, otherwise non-zero
 {            e#  If non-zero (i.e. last element wasn't the minimum element)
  1m<         e#   Rotate the array 1 to the left
 }{           e#  Else
  )\          e#   Remove the last element and bring the array back to TOS
 }?           e#  (end if)
}h            e# (end do-while)
;             e# Remove the empty array left behind
]             e# End the array

Tidak yakin seberapa membantu itu tetapi Anda dapat menggunakannya (+daripada 1m<jika Anda mau.
Martin Ender

@ MartinEnder Saya sudah menggunakan <potongan itu sehingga mungkin lebih baik untuk tetap menggunakan1m<
Business Cat

Meskipun saya tidak yakin saya akan bisa melakukannya lagi tanpa menggunakan blok ...
Bisnis Cat

5

Japt , skor = 4

Program 1

n

Cobalah online!

Program 2

ñ

Cobalah online!

Program 3

s)$.sort((a,b)=>a-b

Cobalah online!

Program 4

Ov85d +110d

Cobalah online!


1
Bagus Saya pikir Anda dapat menyimpan U di program ketiga dengan melakukan s)$.sort(..., tidak yakin apakah itu berguna.
ETHproduk

@ ETHproduk Terima kasih. Saya tidak begitu yakin apakah saya bisa melakukan lebih banyak lagi; tidak dapat eval lagi Japt atau JS karena Odan $telah digunakan. Saya terbuka untuk saran jika Anda bisa memikirkan cara penyortiran lainnya! :)
Tom

4

Oktaf, 2 poin

Sulit untuk bersaing dengan esolang, tetapi begini:

Saya terkesan jika seseorang mengalahkan ini. uniquedapat digunakan untuk mengurutkan nilai, tetapi akan menghapus duplikat. Untuk memasukkan duplikat Anda perlu tanda kurung, dan mereka banyak digunakan dalam semacam gelembung. Anda juga perlu @, yang digunakan juga.

Nomor 1:

Yang ini cukup sederhana: Buat fungsi anonim, ditugaskan ke variabel ans.

@sort

Menyebutnya dengan cara ini: ans([-5, 3, 0, -2, 100]). Ini tidak berfungsi pada tio, tetapi bekerja pada oktaf online .


Nomor 2:

Ini hanyalah implementasi dari semacam gelembung, tanpa menggunakan karakter @sort. Kami tidak dapat menjadikan ini fungsi, karena o, dan kami tidak dapat menggunakannya inputkarena t. Karena itu kami terjebak eval.

eval(['a=inpu',116,'("");']);i=1;k=0;
while~k,k=1;i=1;while i<numel(a),if a(i)>a(i+1),a([i+1,i]) = a([i,i+1]);k=0;
end,i++;end,end,a

eval(['a=inpu',116,'("");']);mengevaluasi ke:, a=input("");yang dapat kita gunakan untuk memasukkan vektor input kami. Sisanya adalah pengurutan gelembung tanpa menggunakan foratau mod. Perhatikan bahwa ini harus disimpan dalam skrip dan dipanggil dari GUI / CLI. Anda tidak dapat menyalin-menempelkannya, karena input("")(ia akan menggunakan sisa kode sebagai input, sehingga gagal total).


4

Haskell (lambdabot), 3 fungsi

sort


vv v|vvv:vvvv<-v=vv vvvv|v==v=v
vvvv==:vvv|vvvv==vv vvvv=vvv:vvvv|v:vv<-vvvv,vvv<v=vvv:v:vv|v:vv<-vvvv=v:vv==:vvv
vv=:vvvv|v:vvv<-vvvv=vv==:v=:vvv
vv=:v=vv
v vvv=vv vvv=:vvv


fix(ap(min).ap((++).flip(map)[1].(.(0*)).(+).minimum).(.ap(\\)(flip(map)[1].(.(0*)).(+).minimum)))

Saya menggunakan lingkungan lambdabot untuk menghindari banyak importpernyataan. Bahkan sortkebutuhan import Data.List. lambdabot mengimpor banyak modul secara default. Selain yang hilang imports, itu kode Haskell standar sesuai aturan kami.

Cobalah online! .

Fungsi 1

sort

Fungsi perpustakaan dari Data.List. Tidak banyak yang bisa dikatakan di sini.

Fungsi 2

vv v|vvv:vvvv<-v=vv vvvv|v==v=v
vvvv==:vvv|vvvv==vv vvvv=vvv:vvvv|v:vv<-vvvv,vvv<v=vvv:v:vv|v:vv<-vvvv=v:vv==:vvv
vv=:vvvv|v:vvv<-vvvv=vv==:v=:vvv
vv=:v=vv
v vvv=vv vvv=:vvv

Fungsi vmengimplementasikan jenis-sisipan.

Saya menggunakan penjaga pola untuk menghindari ()parameter. Bandingkan vv v|vvv:vvvv<-v=...dengan vv(vvv:vvvv)=....

Baris pertama, fungsi vvadalah fungsi pembantu untuk membuat daftar kosong. Dengan itu saya tidak perlu menggunakan []untuk menulis daftar kosong literal. Lebih mudah dibaca:

mkEmpty list | hd:tl <- list = mkEmpty tl | otherwise = list

(==:)is insert, yang menyisipkan elemen ke dalam daftar yang diurutkan, sehingga daftar yang dihasilkan masih diurutkan. Lebih mudah dibaca:

list `insert` el
  | list == []           = el:list
  | hd:tl <- list, el<hd = el:hd:tl
  | hd:tl <- list        = hd : tl `insert` el

(=:)berkurang. Lebih mudah dibaca:

acc `reduce` list
  | hd:tl <- list = (acc `insert` hd) `reduce` tl
acc `reduce` list = acc

Dan akhirnya vyang mengurangi daftar input menatap dengan []:

sort list = [] `reduce` list

Fungsi 3

fix(ap(min).ap((++).flip(map)[1].(.(0*)).(+).minimum).(.ap(\\)(flip(map)[1].(.(0*)).(+).minimum)))

sortdari Fungsi 1 membuat sebagian besar fungsi daftar-kaki ( fold, scan, until) tidak tersedia. Kebutuhan rekursi =yang digunakan dalam Fungsi 2. Satu-satunya pilihan yang tersisa adalah menggunakan kombinator fixpoint fix. Saya sudah mulai dengan

fix (\f x -> min x ([minimum x]++f(x\\[minimum x])))

yang merupakan semacam seleksi. Mengubahnya menjadi point-free (saya tidak bisa menggunakan lambdas \f x ->..., karena -yang digunakan oleh gurad pola di Fungsi 2) memberikan:

fix (ap min . ap ((++) . return . minimum) . (. ap (\\) (return . minimum)))

Membuat daftar singleton dari nilai dengan returnadalah terlarang (sama untuk pure), jadi saya harus membangun fungsi saya sendiri: \x -> map (\y -> x+0*y) [1]atau bebas poin flip map[1].(.(0*)).(+). Mengganti returnhasil panen

fix(ap(min).ap((++).flip(map)[1].(.(0*)).(+).minimum).(.ap(\\)(flip(map)[1].(.(0*)).(+).minimum)))

2

MATL , 3 program

Program 1

S

Ini hanya menggunakan fungsi builtin, dengan input dan tampilan implisit.

Cobalah di MATL online .

Program 2

`GGnZrd0<a}3M

Ini terus menghasilkan permutasi acak dari input sampai semua perbedaan berturut-turut dari hasilnya adalah non-negatif (ini bogosort , seperti dicatat oleh @cz ). Waktu berjalan adalah non-deterministik dan rata-rata meningkat sangat cepat dengan ukuran input (yaitu, 𝒪 ( n! ) Untuk array size- n dengan semua entri berbeda).

Cobalah di MATL Online .

Program 3

t:"tt_X>_=&)]&h

Ini adalah loop yang menghitung minimum array, menghapus semua elemen yang sama dengan nilai itu, dan memproses sisanya. Ini dilakukan sebanyak ukuran input. Jika tidak semua entri dalam input berbeda, beberapa iterasi tidak akan berguna (tapi tidak berbahaya), karena array sudah dikosongkan.

Cobalah di MATL online .


1
Pemikiran lateral yang bagus!
Greg Martin

Apakah itu semacam bogo?
c ..

@cz googles bogo-sort Memang! TIL
Luis Mendo

1

Pip , 4 program

Program 1 - builtin

Potongan; mengasumsikan daftar di x.

SNx

( SNuntuk Sort Numeric)

Program 2 - permutasi filter

Potongan; mengasumsikan daftar di y. Sangat lambat untuk input yang lebih panjang dari sekitar 7 item.

Y$<=_FIPMyPOy

       PMy     List of permutations of y
     FI        Filter on this lambda function:
 $<=_           Fold on less-than-or-equal
                (gives 1 if the permutation is sorted ascending, 0 otherwise)
Y              Yank that result back into y
               Filter returned a list of (one or more) permutations, so we need to
          POy  Pop the first one

Program 3 - eval

Potongan; mengasumsikan daftar di z.

V J C[83 78 122]

    C[83 78 122]  Apply chr to each number; yields ["S" "N" "z"]
  J               Join that list into a string
V                 Eval

Program 4 - MergeSort

Fungsi anonim; panggilan dengan daftar sebagai argumen (suka ({...} [1 2])atau f:{...} (f [1 2]).

{b:#a>o?(fa@(,#a/2))lc:#a>o?(fa@(#a/2,()))aa:lWb{Wb@0>c@0|b@0Qc@0{aAE:c@0c@>:o}t:bb:cc:t}aALc}

Tidak Disatukan:

{
 ; If more than one element in a, b gets result of recursion with first half
 ; else b gets l (empty list)
 b: #a>o ? (f a@(,#a/2)) l
 ; If more than one element in a, c gets result of recursion with second half
 ; else c gets a
 c: #a>o ? (f a@(#a/2,())) a
 ; Now we merge b and c
 ; We'll put the results in a, which must be initialized to l (empty list)
 a:l
 ; Loop while b is nonempty
 W b {
  ; Loop while 0th element of c exists and is less than or equal to 0th element
  ; of b (note: Q is string equality)
  W b@0>c@0 | b@0Qc@0 {
   ; Append 0th element of c to a
   a AE: c@0
   ; Slice c from 1st element on and assign that back to c (removing 0th)
   c @>: o
  }
  ; Swap b and c
  t:b
  b:c
  c:t
 }
 ; When b is empty, we only need append the rest of c to a and return
 aALc
}

1

PowerShell , 2

|sort

Cobalah online!

Ini adalah cuplikan yang berjalan dalam (mis.) PowerShell setara dengan REPL. TIO Link menunjukkan penggunaan. Ini sortadalah alias untuk Sort-Objectcmdlet.


PARAM($A)[ARRAY]::SORT($A);$A

Cobalah online!

Perintah PowerShell tidak peka huruf besar-kecil, sehingga kita bisa menggunakan sortuntuk yang satu dan SORTyang lainnya. Ini mengambil larik input, mengurutkannya di tempat, dan lalu mengeluarkannya.


1

Ruby, 2 program

Pertama - langsung:

->t{t.sort}

Kedua - bagian yang sulit:

def w(g)
    eval ""<<103<<46<<115<<111<<114<<116
end

0

J

Program satu: 3 byte

/:~

seperti dalam /:~ 3,1,2,1output1 1 2 3

Cobalah online!

CATATAN dalam J, angka negatif diawali dengan _ tidak - sehingga Anda dapat mencoba 4, _10,56, _333 dll.

Program dua: 5 byte

|.\:~

Saya memperbaiki jawaban Anda sehingga kode ditampilkan dengan benar. Jawaban bagus! Juga, Try it onlinehal link ke sebuah halaman web pada TIO, untuk menghubungkan halaman dalam jawaban Anda dapat melakukan ini: [displayed text](link).
clismique

Terima kasih! Baru saja memulai jadi terbiasalah perlahan-lahan! Pikir itu terlihat lebih baik sekarang. Bantuan Anda sangat kami hargai. Richard
Richard Donovan

Program yang Anda tulis mungkin tidak membagikan karakter apa pun; apa adanya, :dan ~terjadi pada keduanya.
Lynn

0

PHP 7, 2 program

Kedua program ini bisa lebih banyak golf.

Program 1, 254 byte, karakter ! "$&+.01:;=>?[]adeginoprtv

$a=$argv;0 .$a[1+1]?$i=$n=$d=0:print$a[1]and die;g:$r=0 .$a[++$i+1];$i=!$r?1:$i;$n=!$r?$n+1:$n;$v=$i+1;$d=$v>$d?$v:$d;$n>$d?print$a[$d]and die:0;$e=$d>$n&&$a[$i]>$a[$v];$t=$a[$i];$a[$i]=$e?$a[$v]:$a[$i];$a[$v]=$e?$t:$a[$v];$n==$d?print"$a[$i] ":0;goto g;

Semacam gelembung. Penggunaangoto untuk membuat loop seperti yang dibutuhkan loop bawaan ().

Program 2, 155 byte, karakter #%'(),-67ACEFINORTUYZ^_{|}~

IF(CREATE_FUNCTION('','NEFTIEZIENAECCERCTZIENA~N~UEEFECTZIENAUERTEF~CFACTY~YRZIENAUE'^')))6()~(7)7~6-677|~(7)7%~#|~6)77|~(7)7|~77-)^))(-|~^~~~(7)7|~')()){}

IF(...){}menghindari penggunaan ;. Kode utama dikodekan dengan XOR, karena $telah digunakan dalam program sebelumnya. Kode:

global$argv;unset($argv[0]);sort($argv);echo join(' ',$argv);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.