이것은 바이트에 대한 일종의 도전입니다.


32

나는 punny 이름의 생각을 멈춰야한다

당신의 임무는 가능한 한 많은 스 니펫 (입력 및 출력 내장 프로그램), 함수 또는 전체 프로그램을 작성하여 언어의 정수 배열 버전이 오름차순으로 정렬되어 있지만 각 프로그램마다 허용됩니다. 이전 프로그램에서 사용되지 않은 ASCII 문자 (또는 ASCII가 아닌 언어로 직접 지정된 경우 언어 코드 페이지)의 문자를 사용합니다.

이것은 예제 답변입니다 (개별 프로그램은 개행으로 구분됨).

Derp
ASdFGHJKLAAA
qwEEERtyRty

이 (가상의 언어)에서, 내 첫 번째 대답은 Derp, 모두 사용하는 D, e, rp. 두 번째 프로그램에서는 해당 문자를 다시 사용할 수 없지만 원하는만큼 많은 문자를 재사용 할 수 있습니다. 세 번째 프로그램과 동일합니다.

각 프로그램은 다음과 같은 정수 배열을 가져야합니다 (유효한 입력 / 출력 스타일에 대한 입력 / 출력 예제 참조).

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

그리고 배열의 항목을 오름차순으로 배열로 출력해야합니다.

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

점수는 총 제출 량입니다. 동점이 있으면 가장 낮은 바이트 수 (코드에서 가장 적은 바이트 수)가 이깁니다!

프로그램 규칙 :

  • 모든 제출물은 하나의 언어 버전으로 올바르게 실행되어야합니다 ( Python 2 != Python 3).
  • 제출은 스 니펫, 기능 또는 전체 프로그램 일 수 있습니다. 당신은 그것들을 혼합하고 일치시킬 수 있습니다-그러나 당신은 어느 것이 무엇인지 말하고 작업 제출에 대한 링크를 제공해야합니다.
  • 가능하면 모든 솔루션에 대한 온라인 링크를 제공하십시오.
  • 모든 제출물은 배열 (또는 문자로 구분 된 문자열)을 입력으로 {any character}취하고 배열을 언어 배열 형식 또는- 구분 문자열 로 정렬하여 출력 해야합니다.
  • ASCII (또는 언어 코드 페이지) 이외의 문자는 사용할 수 없습니다.

예를 들어, 다음은 유효한 입력 / 출력입니다.

[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)

입력 사양 :

  • 배열에는 정수만 포함되어 있습니다. 그러나 음수가있을 수 있으며 숫자가 무한정 반복 될 수 있습니다.

13
말장난이 많을수록 좋습니다!

5
Brainfuck 에서이 문제를 해결하기 위해 귀찮게 할 수있는 사람은 점수가 128 인 Lenguage 솔루션을 얻는다는 것을 알고 있습니까? 또는 단일 Glypho 솔루션이 42를 기록 할 수 있습니다.
Martin Ender

1
@ Qwerp-Derp 어쩌면 약간 지루하지만 확실히 할 수 있습니다. 실제로, I / O가 가장 성가신 부분이 될 것으로 기대합니다 (문자 코드 목록으로 입력을 읽을 수없는 경우).
Martin Ender

1
@WheatWizard 도전이 ASCII를 지정하기 때문에 128 개의 사용 가능한 문자 만 계산했습니다.
Martin Ender

2
언어 제한에 3 가지 문제가 있습니다. (1) 언어를 능숙하게 다루기 때문에 임의의 언어 클래스를 제한하는 것은 재미 있지 않습니다. (2) JavaScript와 같은 대부분의 "일반"프로그래밍 언어 (이미 답변이 있음)는 요구 사항을 충족하지 못합니다. 제한의 의도, 그리고 다시는 재미 있지 않습니다. (3) 그것이 실제로 관찰 가능한 요구 사항이라고 생각하지 않습니다. "특정 기능"은 그다지 잘 관찰 할 수 없으며, Glypho 문자가 숨겨진 변수 세트에서 작동하는 특정 기능을 가지고 있다고 여러 계층의 추상화를 통해 논쟁 할 수 있습니다.
밀 마법사

답변:


15

젤리 , 10 개 프로그램, 65 바이트

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

@ Lynn 's Jelly answer와는 약간의 중복이 있습니다 . bogosort 아이디어에 대한 크레딧은 그녀에게갑니다.

온라인으로 사용해보십시오! 또는 고유성을 확인하십시오 .

작동 방식

Ṣ               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

젤리, 8 개 프로그램

Ṣ                   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.

마지막 프로그램은 정말 성가시다…

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.

œṡ에서 를 제거 할 수 있다면 <;0œṡ0⁸ṁjµ/이상한 것도 있습니다 ²SNr²ZFœ&. 도움을 부탁드립니다.


1
Roots → polynomial, polynomial → roots천재입니다!
Luis Mendo

1
출력 순서가 반대로 나타납니다 . 운좋게 U도 무료입니다
Luis Mendo

음, 음의 정수… 나는 그에 대해 내가 할 수있는 일을 볼 것입니다
Lynn

조금 더 필요하다고 생각하지만 어떻게 개선 할 수 있을지 모르겠습니다.
Matthew Roh

@ETHproductions 수정되었습니다.
Lynn

14

05AB1E , 점수 = 6

05AB1ECP-1252 인코딩을 사용합니다.

덕분에 케빈 Cruijssen 프로그램 (4)에 대한
덕분에 라일리 프로그램 6 영감을.

프로그램 1

{               # sort          

온라인으로 사용해보십시오!

프로그램 2

`[Ž.^]¯

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

온라인으로 사용해보십시오!

프로그램 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

온라인으로 사용해보십시오!

프로그램 4

ϧ

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

온라인으로 사용해보십시오!

프로그램 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

온라인으로 사용해보십시오!

프로그램 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

온라인으로 사용해보십시오!


œß추가 점수를 사용할 수 있습니다. 여기에서 시도하십시오.
케빈 크루이 센

@ KevinCruijssen : 감사합니다! 나는 단지 œ해결책을 찾고 있었지만, 심지어조차 알지 못했습니다 ß:)
Emigna

나는 완전히 정직 할 것입니다, 나는 여기 에서 그것을 얻었습니다 . ;)
Kevin Cruijssen

1
@Riley 내가 잘못한 것이 아니라면 , 잘못된 결과를
낳습니다

1
꼬리와 팝을 얻는 방법이 있습니까? 그냥 가져 오는 경우 대신 값을 팝하면 €Ý逤작동 ¤합니다.
Riley

11

Brachylog , 점수 =  4  5

프로그램 1-셔플 정렬

ṣ.↔ : 1≥₎∧ | ↰

우리는 셔플하고 목록의 반대가 증가하지 않는지 확인합니다. 그렇지 않으면 재귀 적으로 재 시도합니다.

프로그램 2-순열 정렬

p≤₁

감소하지 않는 첫 번째 순열을 출력합니다.

프로그램 3-내장

영형

주문.

프로그램 4-내장

≜ᵒ

라벨로 주문하십시오. 목록의 정수는 이미 고정되어 있기 때문에와 동일합니다 o.

프로그램 5-최소 인쇄

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

이 자연의 괴물에 대한 설명은 다음과 같습니다.

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
4를
넘어서도

2
@NoOneIsHere 나는 그 라인을 피하고 연장하기 위해 그 라인을 확장했습니다!
Fatalize

꼬리 재귀 +보고 르 소트. 레시피 F-처럼 보이는RecursionError: maximum call stack size exceeded
Esolanging 과일

@ Challenger5 Tail 재귀는 Prolog에서 충분히 구현되므로 이런 일이 발생하지 않아야합니다.
Fatalize

7

자바 스크립트, 점수 1 2

@ETHproductions 덕분에 문자열 이스케이프를 상기시켜 점수를 두 배로 늘 렸습니다.

스 니펫 1 (21 바이트, 문자 \ ,-.=>289`Facehilnorstux)

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

스 니펫 2 (9117 바이트, 문자 (+)[!])

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

브라우저 콘솔에서 두 버전을 모두 테스트 할 수 있습니다. 첫 번째 버전은 함수일 뿐이고 두 번째 버전은 괄호와 인수를 추가해야하는 스 니펫입니다.

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

방법?

첫 번째 스 니펫은 전달한 배열에서 sort 메소드를 호출합니다. 기본적으로 정렬 방법은 사전 식을 정렬하며 정수 (특히 여러 자리 음수)에는 적합하지 않습니다. 따라서 두 개의 요소를 취하고 후자를 빼는 화살표 함수 형태의 콜백을 전달해야합니다. 결과 값에 따라 두 요소가 재정렬됩니다. 0보다 작 으면a 앞에 나타나고 b, 0보다 크면 a뒤에 나타나고 b, 0이면 두 요소가 서로 옆에있게됩니다.

두 번째 스 니펫은 첫 번째 스 니펫의 인코딩 된 버전에 지나지 않으며 JavaScript에서 object.function()와 같은 사실을 이용합니다 object["function"](). 또한 빈 배열을 사용합니다.! 연산자 및 숫자 캐스팅을 사용하여 함수 이름에 필요한 문자를 찾을 수있는 모든 종류의 문자열을 생성합니다. 그런 다음 대괄호는 문자열의 특정 색인에서 문자를 가져 오는 데 한 번 더 사용되며 모든 문자가 연결되어 다음 JavaScript 코드가 생성됩니다.

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

[]["fill"]equals [].fill는 누구 ["constructor"]Function객체 인지를 나타 냅니다. 그런 다음 첫 번째 함수 인 문자열 (함수가 호출 될 때 평가됨)을 사용하여 호출하지만 인수가로 대체되었습니다 this. this인수 의 값을 설정하려면 이 함수에 대한 함수, 즉를 호출해야합니다 ["call"]. 일반적인 JavaScript에서는 다음과 같이 작성합니다.

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

백 틱을 대신 사용하여 괄호없이 솔루션을 얻는 것이 가능합니다. Function`return a=>a.sort\x28\x28a,b\x29=>a-b\x29` 예를 들어, 이미 사용한 문자를 사용하지 않고
ETHproductions

중요하지는 않지만 JSF가 해당 문자를 생성하는 것 대신에 '예를 들어 도입 하고 수행 하여 두 번째 스 니펫에서 상당한 양의 바이트를 절약 할 수 '('있습니다. (또한, 사용 ft(가) 대신 바르로 a하고 b, b말 그대로 3000에 대한 문자 비용)
ETHproductions

7

V , 3 , 4 점

이것은 정말 재미있는 도전이었습니다! 고맙게도 vim에는 "정렬"기능이 내장되어 있습니다. 그렇지 않으면 기본적으로 불가능합니다. 불행히도 V / vim은 문자열 기반이므로 숫자 값으로 정렬하려면 인수가 필요합니다. 그래서 전화 해요

  • 숫자 값으로 정렬 n ,

  • 16 진수 값으로 정렬 x 하고

  • 부동 소수점 값으로 정렬 f

작은 참고 사항 : <esc>또는 같은 것을 쓸 때<C-r> , 이것은 실제로 단일 바이트이다. 인쇄 할 수없는 문자를 나타내며 V는 인쇄 할 수없는 문자에 크게 의존하기 때문에이 방법을 사용하면 모든 것이 더 쉬워집니다. TIO 링크에는 -v플래그가있어 V 인터프리터가이를 나타내는 문자 인 것처럼 읽습니다.

프로그램 1, 2 바이트

ún

온라인으로 사용해보십시오!

이것은 V 특정 호출 정렬 함수라고합니다.

프로그램 2, 10 바이트

Qsor x
vi

이것은 단지 '정렬'을 직접 호출합니다. 이것에 대한 유일한 흥미로운 점은 exV의 증조부 인 텍스트 편집기 'ex'를 에뮬레이트하는 이상한 모드 인 모드에서 수행한다는 것입니다. ex 모드를 종료하는 데 사용되는 명령 vi의 바로 가기입니다 visual. 여기에는 후행 줄 바꿈이 필요합니다.

온라인으로 사용해보십시오!

프로그램 3, 14 바이트

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

온라인으로 사용해보십시오!

자, 여기에 설명이 조금 이상해 지기 시작합니다 . 텍스트를 빌드 할 수 있으면 텍스트 sor x를 삭제하고를 사용하여 현재 명령에 삽입 할 수 있습니다 <C-r><register-name>. 대문자로 입력하겠습니다.

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

프로그램 4, 19 바이트

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

온라인으로 사용해보십시오!

그리고 여기에 설명이 매우 이상해 지기 시작합니다 . 지난 시간과 마찬가지로, 다른 키를 사용할 수 있도록 명령을 일반 모드로 빌드합니다.

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, 4 점

프로그램 1 : 내장

$

프로그램 2 : Eval'ed Built-in

36c~

36은의 ASCII 값입니다 $.

프로그램 3 : 순열 정렬

e!0=

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

프로그램 4 : 최소값

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

이 끔찍한 괴물에 대한 설명 :

[             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

그것이 얼마나 도움이되는지 모르지만 원한다면 (+대신 사용할 수 있습니다 1m<.
마틴 엔더

@MartinEnder 이미 <해당 스 니펫에서 사용 하고 있으므로이를 고수하는 것이 좋습니다.1m<
Business Cat

블록을 사용하지 않고 더 이상 할 수 있을지 모르겠지만 ...
Business Cat

5

apt , 점수 = 4

프로그램 1

n

온라인으로 사용해보십시오!

프로그램 2

ñ

온라인으로 사용해보십시오!

프로그램 3

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

온라인으로 사용해보십시오!

프로그램 4

Ov85d +110d

온라인으로 사용해보십시오!


1
좋은데 나는 당신이 세 번째 프로그램에서 U를 저장할 수 있다고 생각 s)$.sort(...하지만, 그것이 유용한 지 확실하지 않습니다.
ETHproductions

@ETHproductions 감사합니다. 어쨌든 더 많은 일을 할 수 있는지 잘 모르겠습니다. 더 이상 JAPT 또는 JS 때문에 평가 후면 수 없습니다 O$사용되어왔다. 다른 정렬 방법을 생각할 수 있다면 제안을 위해 열려 있습니다! :)
Tom

4

옥타브, 2 점

esolang과 경쟁하기는 어렵지만 다음과 같습니다.

누군가 이길 때 감동합니다. unique값을 정렬하는 데 사용할 수 있지만 중복을 제거합니다. 사본을 삽입하려면 괄호가 필요하며 버블 정렬에 많이 사용됩니다. 당신은 또한 필요합니다@ .이 역시 사용됩니다.

번호 1 :

이것은 매우 간단합니다 ans. 변수에 할당 된 익명 함수를 작성하십시오 .

@sort

이런 식으로 호출하십시오 : ans([-5, 3, 0, -2, 100]). tio에서는 작동하지 않지만 octave-online 에서는 작동 합니다 .


2 번:

이것은 문자를 사용하지 않고 단순히 버블 정렬을 구현 한 것입니다 @sort. 로 인해이 기능을 o사용할 수 없으며로 input인해 사용할 수 없습니다 t. 따라서 우리는 붙어 있습니다 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,'("");']);로 평가 a=input("");, 우리는 우리의 입력 벡터를 입력하는 데 사용할 수있는. 나머지는 for또는 을 사용하지 않고 거품 정렬 mod입니다. 스크립트에 저장하고 GUI / CLI에서 호출해야합니다. 이 때문에 복사하여 붙여 넣을 수 없습니다 input("")(나머지 코드를 입력으로 사용하므로 비참하게 실패합니다).


4

Haskell (lambdabot), 3 가지 기능

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)))

많은 import진술 을 피하기 위해 람다 봇 환경을 사용하고 있습니다 . 심지어 sort필요합니다 import Data.List. lambdabot은 기본적으로 많은 모듈을 가져옵니다. missing imports은 우리 규칙에 따라 표준 Haskell 코드입니다.

온라인으로 사용해보십시오! .

기능 1

sort

에서 라이브러리 기능 Data.List. 여기서 할 말이 없습니다.

기능 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

함수 v는 삽입 정렬을 구현합니다.

()매개 변수 를 피하기 위해 패턴 가드를 사용 합니다. 비교 vv v|vvv:vvvv<-v=...vv(vvv:vvvv)=....

첫 번째 줄 함수 vv는 빈 목록을 만드는 도우미 함수입니다. 그것으로 나는 []문자 그대로 빈 목록을 작성하는 데 사용할 필요가 없습니다 . 더 읽기 쉬운 :

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

(==:)insert는 요소를 정렬 된 목록에 삽입하여 결과 목록이 여전히 정렬되도록합니다. 더 읽기 쉬운 :

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

(=:)감소합니다. 더 읽기 쉬운 :

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

마지막으로 v입력 목록이 다음 으로 시작 되는 것을 줄입니다 [].

sort list = [] `reduce` list

기능 3

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

sort함수에서 1리스트 워킹 기능 (대부분하게 fold, scan, until사용할 참조). =기능 2에서 사용되는 재귀 요구 사항 왼쪽 유일한 옵션은 수정 점 결합기를 사용하는 것 fix입니다. 나는 시작했다

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

이것은 선택 정렬입니다. 그것을 포인트 프리로 바꾸면 (함수 2의 패턴 구라 드가 사용 \f x ->...하기 때문에 -lambdas 사용할 수 없습니다 )는 다음을 제공합니다.

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

단일 목록을 값으로 만드는 return것은 금지되어 있으므로 (와 동일 pure) 자체 기능을 작성해야합니다 : \x -> map (\y -> x+0*y) [1]또는 point-free flip map[1].(.(0*)).(+). return수율 교체

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

2

MATL , 3 프로그램

프로그램 1

S

이것은 암시 적 입력 및 표시와 함께 내장 함수를 사용합니다.

MATL 온라인 에서 사용해보십시오 .

프로그램 2

`GGnZrd0<a}3M

이렇게하면 결과의 모든 연속적인 차이가 음이 아닐 때까지 입력의 무작위 순열이 계속 생성됩니다 ( @cz 에서 언급 한 것처럼 bogosort입니다 ). 실행 시간은 결정적이지 않으며 입력 크기 (즉, 모든 항목이 다른 크기 -n 배열의 경우 𝒪 ( n! ))에 따라 평균이 매우 빠르게 증가 합니다.

MATL Online 에서 사용해보십시오 .

프로그램 3

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

이것은 배열의 최소값을 계산하고 해당 값과 동일한 모든 요소를 ​​제거하고 나머지로 진행하는 루프입니다. 이것은 입력 크기만큼 여러 번 수행됩니다. 입력의 모든 항목이 다르지 않은 경우 배열이 이미 비워 졌기 때문에 일부 반복은 쓸모가 없지만 무해합니다.

MATL 온라인 에서 사용해보십시오 .


1
좋은 측면 사고!
Greg Martin

저것은보고 정렬인가?
c ..

@cz googles bogo-sort 실제로! TIL
Luis Mendo 2016 년

1

, 4 프로그램

프로그램 1- 내장

단편; 의 목록을 가정합니다 x.

SNx

( SN숫자 정렬의 경우)

프로그램 2- 필터 순열

단편; 의 목록을 가정합니다 y. 약 7 개보다 긴 입력의 경우 매우 느립니다.

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

프로그램 3 평가

단편; 의 목록을 가정합니다 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

프로그램 4 -MergeSort

익명의 기능; 인수 (같은 목록을 전화 ({...} [1 2])또는 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}

언 골프 드 :

{
 ; 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

온라인으로 사용해보십시오!

이것은 예를 들어 PowerShell의 REPL에 해당하는 스 니펫입니다. TIO 링크는 사용법을 보여줍니다. 는 sort의 별칭입니다 Sort-Objectcmdlet을.


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

온라인으로 사용해보십시오!

우리가 사용할 수 있도록 PowerShell을 명령은 대소 문자를 구별 sort하나와 SORT다른 하나를 위해. 입력 배열을 가져 와서 제자리로 정렬 한 다음 출력합니다.


1

루비, 2 개의 프로그램

첫 번째는 간단합니다.

->t{t.sort}

둘째-까다로운 부분 :

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

0

J

프로그램 1 : 3 바이트

/:~

/:~ 3,1,2,1출력 에서와 같이1 1 2 3

온라인으로 사용해보십시오!

J에서 음수 앞에는 _ not이 있으므로 4, _10,56, _333 등을 시도 할 수 있습니다.

프로그램 2 : 5 바이트

|.\:~

코드가 올바르게 표시되도록 답변을 수정했습니다. 좋은 대답입니다! 또한, Try it onlineTIO의 웹 페이지로 연결되는 것, 답변으로 페이지를 연결하는 방법은 다음과 같습니다 [displayed text](link)..
clismique

감사! 천천히 시작해서 천천히 걸어! 지금은 더 좋아 보인다고 생각하십시오. 도와 주셔서 감사합니다. Richard
Richard Donovan

작성하는 프로그램은 문자를 공유하지 않을 수 있습니다. 있는 그대로, :그리고 ~그들 모두에서 발생합니다.
Lynn

0

PHP 7, 2 프로그램

두 프로그램 모두 더 골프를 타실 수 있습니다.

프로그램 1, 254 바이트, 문자 ! "$&+.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;

버블 정렬. goto내장 루프가 요구하는대로 루프를 작성하는 데 사용 합니다 ().

프로그램 2, 155 바이트, 문자 #%'(),-67ACEFINORTUYZ^_{|}~

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

IF(...){}의 사용을 피하십시오 ;. 기본 코드는 $이전 프로그램에서 이미 사용되었으므로 XOR로 인코딩됩니다 . 코드:

global$argv;unset($argv[0]);sort($argv);echo join(' ',$argv);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.