일종의 퀴 바이트가 아닌

string이 주어지면 소스 코드의 표시 순서에 따라 x문자를 x정렬 하여 출력하십시오 .

Source: ThisIs A Test
 Input: Is it a Test?
Output: TissI   etta?

Source: Harry - yer a wizard.
 Input: I'm a what?
Output: aa  wh'?Imt

Source: Mr. H. Potter, The Floor, Hut-on-the-Rock, The Sea
 Input:
Output:

규칙

  • 표준 허점 및 I / O 규칙 적용
  • 입력 및 출력은 문자열, 문자 목록 또는 바이트 목록 일 수 있습니다.
  • 소스에서 문자를 여러 번 사용하는 경우 첫 번째 항목을 사용하십시오.
  • 하나 이상의 문자가 소스에 나타나지 않으면 끝에 있어야합니다. 그들의 순서는 중요하지 않으며 일관성이 없어도됩니다.
  • 소스는 비어 있지 않아야합니다
  • 줄 바꿈은 다른 문자와 동일하게 취급됩니다.
  • 코드가 실행되는 순서는 중요하지 않습니다. 원시 문자열입니다.
  • 입력은 코드와 동일한 인코딩입니다.
  • 입력은 바이트가 아닌 문자로 정렬됩니다.
  • 정렬은 대소 문자를 구분합니다
  • 이것은 이므로 각 언어마다 가장 짧은 바이트 단위의 대답이 승리합니다!
let f = (s, i, o) => o.split("").map(x => [x, s.indexOf(x) == -1 ? s.length + 100 : s.indexOf(x)]).sort(([, a], [, b]) => a - b).map(([x]) => x).join("") === o && i.split("").sort().join("") === o.split("").sort().join("");let g = (s, i) => i.split("").map(x => [x, s.indexOf(x) == -1 ? s.length + 100 + Math.random() : s.indexOf(x)]).sort(([, a], [, b]) => a - b).map(([a]) => a).join("");$(() => $("button").click(() => $("#result").text(f($("#source").val(), $("#input").val(), $("#output").val()) ? "Valid" : `Invalid; example output: \`${g($("#source").val(), $("#input").val())}\``)));
body,label{display: flex;flex-direction: column;}*{white-space: pre;font-family: Inconsolata, Consolas, mono-space;font-size: 14px;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><label>Source: <textarea id="source">ThisIs A Test</textarea></label><label>Input: <textarea id="input">Is it a Test?</textarea></label><label>Output: <textarea id="output">TissI   etta?</textarea></label><div><button>Validate</button> <span id="result"></span></div>


답변

Python 3.8 (pre-release), 102 100 96 85 79 76 68 61 59 60 bytes

c="print(sorted(x:=input(),key=('c=%r;'%c+x).find))";exec(c)

Try it online!

-2 bytes by using this

-4 bytes by realizing that <0 == ==-1 and removing the unnecessary +1

-11 bytes thanks to Neil

-6 bytes thanks to dzaima

-3 bytes thanks to rod

-8 bytes thanks to negative seven pointing out that the program can output a list of chars

-7 bytes due to Embodiment of Ignorance switching back to Python 3.8 and using :=

-2 bytes due to Jo King switching out the variable name s for c, so we could leave out the ;c

+1 bytes because negative seven pointed out that it wasn’t filtering ; correctly


답변

APL (Dyalog Unicode), 14 bytesSBCS

Anonymous tacit prefix function.

'''∘⍋⊃¨⊂'∘⍋⊃¨⊂

 enclose argument (to act on it as a whole)

⊃¨ from that, pick one character for each of the following indices:

∘⍋ the indices that would sort the argument in the the order given by the following string (all non-members go in order of appearance at the end):

'''∘⍋⊃¨⊂' the characters '∘⍋⊃¨⊂

Try it online!


답변

C# (Visual C# Interactive Compiler), 48 bytes

n=>n.OrderBy((@"n=>.OrdeBy(@""+)Ixf"+n).IndexOf)

Try it online!


답변

JavaScript (Node.js), 60 58 56 bytes

-2 bytes from Jo King

f=_=>_.sort((a,b)=>(p=g=>`f=${f+g}`.indexOf(g))(a)-p(b))

Try it online!


답변

Perl 6, 56 bytes

<slurp.comb.sort({"<$_>~EVAL$^a".index($a)}).say>~~.EVAL

Try it online!


답변

Ruby, 57 bytes

->s{s.sort_by{|o|%{->s{.ort_by|%}index()9}.index(o)||99}}

Try it online!

Fairly straightforward, assuming I haven’t missed a golfing trick. Take in a list of characters and sort by their index in a string consisting of all the uniq characters in the code in order of their appearance. Often their first appearance is in that very string, but that doesn’t change the order.


답변

05AB1E, 24 22 21 bytes

Σ"Σ"'"«"'«Rrk}"«Rrk}R

Try it online!

Explanation:

Σ                    }               # Sort
 "Σ"                                 # Σ string literal
    '"                               # " string literal
       «                             # Concatenate last two literals
        "'«Rrk}"                     # '«Rrk} another literal
                «                    # Concat again
                 R                   # Reverse literal (so: }krR'«'"Σ)
                  r                  # reverse stack 
                   k                 # find the current sorting index in our code string 
                     R               # reverse our sorted string

First time trying stuff in 05AB1E so probably lots to be saved