태그 보관물: sorting

sorting

그 단어 2에 서명하십시오! 정렬 기능을 사용할 수 $없으므로

그 단어 2에 서명하십시오!

얼마 전, 나는 Sign that word 라는 챌린지를 게시했습니다 ! . 도전, 당신은 순서에 넣어 문자 (예 : 서명 인 단어의 서명을 찾아야합니다 this입니다 hist). 이제 그 도전은 꽤 잘 이루어졌지만 한 가지 중요한 문제가있었습니다. 너무 쉬운 방법이었습니다 ( GolfScript 답변 참조 ). 따라서 비슷한 과제를 게시했지만 규칙이 더 많았으며 대부분 PPCG 사용자가 이전 퍼즐에 대한 의견에서 제안했습니다. 자, 우리는 간다!

규칙

  1. 프로그램은 입력을받은 다음 서명을 STDOUT 또는 사용하는 언어와 동등한 것으로 출력해야합니다.
  2. 내장 정렬 기능을 사용할 수 $없으므로 GolfScript 와 같은 항목은 허용되지 않습니다.
  3. 다중 대소 문자를 지원해야합니다. 프로그램은 대문자와 소문자를 모두 그룹화해야합니다. 의 서명이 그래서 Hello입니다 eHllo, 아니 Hello당신은 첫 번째 버전에 GolfScript 응답 주어진다한다.
  4. 프로그램에 대한 무료 통역사 / 컴파일러가 있어야합니다.

채점

당신의 점수는 바이트 수입니다. 가장 낮은 바이트 수가 이깁니다.

리더 보드

다음은 일반 리더 보드와 언어 별 수상자 개요를 생성하는 스택 스 니펫입니다.

답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.

# Language Name, N bytes

N제출물의 크기는 어디에 있습니까 ? 당신이 당신의 점수를 향상시킬 경우에, 당신은 할 수 있습니다 를 통해 눈에 띄는에 의해, 헤드 라인에 오래된 점수를 유지한다. 예를 들어 :

# Ruby, <s>104</s> <s>101</s> 96 bytes



답변

Pyth, 10 바이트

sm@+drd1zG

온라인으로 사용해보십시오 : 데모

설명:

             implicit: z = input string
 m       G   map each letter (variable d) of the alphabet to:
   +drd1        d + upper(d)
  @     z       filter z for these two letters
s            sum, join to a string


답변

하스켈, 51

f s=[x|(a,b)<-zip['a'..'z']['A'..],x<-s,x==a||x==b]

zip문자의 쌍의 목록을 만듭니다 [('a','A'), ...('z','Z')]. 자르기 때문에 두 번째 끝점을 지정할 필요가 없습니다. 목록의 각 쌍에 대해 입력 문자열 s에서 쌍의 두 문자 중 하나 인 문자를 사용합니다.


답변

파이썬 3, 72 70 바이트

s=input()
print("".join(d*(ord(d)&31==c)for c in range(27)for d in s))

입력이로만 구성되어 있다고 가정합니다 [a-zA-Z].

(@xnor 덕분에 2 바이트)


답변

GOTO ++, 531 바이트

niveaugourou 0
s=ENTRETONTEXTE()
§2 a=LeCaracNumero()&s *(1)
n=*(1)
costaud i=*(2)/&i infeg NombreDeLettres(&s)/i=+*(1)
b=LeCaracNumero()&s &i
c=&b
d=&a
GOTONULPOURLESNULS %4 }&b sup *(96){
c=-*(32)
§4 GOTONULPOURLESNULS %5 }&a sup *(96){
d=-*(32)
§5 GOTONULPOURLESNULS %1 }&c inf &d{
a=&b
n=&i
§1 faiblard
GOTOPRINTDUTEXTE()&a
s=Marijuana()}BOITEAPINGOUINS()}PrendsUnMorceau()&s *(0) &n{ }PrendsUnMorceau()&s }&n+*(1){ *(0){{ «»
GOTONONNULPOURLESNULS %3 }NombreDeLettres(&s) eg *(1){
GOTOPASMALIN %2
§3 GOTOPRINTDUTEXTE()&s

GOTO ++ 프로젝트 페이지

다음은 코드가 더 읽기 쉽고 주석이 달린 버전입니다 ( GOTOGOTO ++에서 주석 을 시작하는 주 ).

niveaugourou 0                                          GOTO Allow every keyword to be used
s=ENTRETONTEXTE()                                       GOTO Read from STDIN
§2 a=LeCaracNumero()&s *(1)                             GOTO Get first char in s
n=*(1)
costaud i=*(2)/&i infeg NombreDeLettres(&s)/i=+*(1)     GOTO Loop on every char of s
b=LeCaracNumero()&s &i                                  GOTO b = i-th char
c=&b
d=&a
GOTONULPOURLESNULS %4 }&b sup *(96){                    GOTO If b is uppercase, goto §4
c=-*(32)                                                GOTO Get the uppercase ASCII value of b
§4 GOTONULPOURLESNULS %5 }&a sup *(96){                 GOTO same as above but with a
d=-*(32)
§5 GOTONULPOURLESNULS %1 }&c inf &d{                    GOTO If b is after a in alphabetical order, goto §1 (next loop iteration)
a=&b                                                    GOTO Else replace a by b
n=&i
§1 faiblard                                             GOTO End loop
GOTOPRINTDUTEXTE()&a                                    GOTO Print the value of a
t=PrendsUnMorceau()&s *(0) &n                           GOTO Get the part of s before a
u=PrendsUnMorceau()&s }&n+*(1){ *(0)                    GOTO Get the part of s after a
e=BOITEAPINGOUINS()&t &u                                GOTO Create an array of penguins containing the two substrings
s=Marijuana()&e «»                                      GOTO Concatenate the penguins in the array
GOTONONNULPOURLESNULS %3 }NombreDeLettres(&s) eg *(1){  GOTO If s is one char long, goto §3
GOTOPASMALIN %2                                         GOTO Else goto §2
§3 GOTOPRINTDUTEXTE()&s                                 GOTO Print the last char


답변

Pyth, 15 14 바이트

s*V/LzJ.irG1GJ

1 바이트를 제거 한 isaacg에게 감사드립니다.

나는 아직 Pyth에 대해 잘 모르기 때문에 골프를 잘하지 못할 수도 있습니다.

여기에서 시도하십시오.


답변

자바 스크립트 (ES6), 71 74

A-Za-z로 제한 (@Matthieu M의 의견 참조)

‘반환’을 피하기 위해 쉼표로 단일 표현식을 작성하는 데 너무 편한 편집 . 여기에 출력이 필요하므로 간단하게 사용하고 for쉼표를 잊어 버릴 수 있습니다 .

배열 이해를 사용하면 바이트 수는 73이지만 더 이상 유효한 EcmaScript 6이 아닙니다.

일반적인 참고 사항 : EcmaScript 6 호환 브라우저에서 스 니펫 실행 테스트 (특히 MSIE가 아닌 Chrome이 아닙니다. Firefox에서 테스트 한 경우 Safari 9로 이동 가능)

f=w=>{v=[];for(c of w)v[n=parseInt(c,36)]=(v[n]||'')+c;alert(v.join``)}
<input id=I value='Hellzapoppin'><button onclick=f(I.value)>-></button>


답변

자바 스크립트, 112 194 바이트

r=[];t=[];a=s.split('').map(function(x){t[i=parseInt(x,36)]?t[i].push(x):t[i]=[x];return i;});while(l=a.length)r[l-1]=t[a.splice(a.indexOf(Math.max.apply({},a)),1)].pop();console.log(r.join(''))

이것은 “골프”와는 거리가 멀지 만 지금은 조금 바빠서 정렬을 제거하기 위해 편집했습니다.