음수가 아닌 숫자가 주어지면 pi 에서 첫 번째로 n
숫자를 정렬하십시오.n
.
함수 cli 인수 또는 STDIN을 통해 입력하거나 문자열, char [] 또는 정수로 입력 할 수 있습니다. 리턴 값, 종료 상태 또는 STDOUT을 통해 출력 할 수 있습니다.
음수가 아닌 숫자가 주어지면 pi 에서 첫 번째로 n
숫자를 정렬하십시오.n
.
함수 cli 인수 또는 STDIN을 통해 입력하거나 문자열, char [] 또는 정수로 입력 할 수 있습니다. 리턴 값, 종료 상태 또는 STDOUT을 통해 출력 할 수 있습니다.
답변:
ox+.n0
Leaky Nun 덕분에 -1 : 0
필요한 경우 입력이 제공 됩니다. Jakube
덕분에 사소한 -1 덕분에 백틱이 필요하지 않았습니다 (아, 어떻게 그리웠습니까?
0
끝에는 필요하지 않습니다 . 입력이있는 경우 0
는이 0
입력에 의해 제공 될 것이다; 입력 값에가 0
없으면 중요하지 않습니다.
ox+.n0
3
찾을 수 -1
없으면 찾기가 반환 되므로을 삭제할 수 있습니다 .
중복 필터링이 불필요하다는 Leaky Nun 덕분에 1 바이트가 절약 되었습니다. Adnan
덕분에 2 바이트를 절약했습니다 .
žqRvy†J
설명
žq # push pi to 15 decimals (contains all digits but 0)
R # reverse
vy # for each char in pi
†J # move it's occurrences in the input to the front
13žsRvy†J
9 바이트 동안
žq
대신 사용할 수 있습니까 13žs
?
“ṀSṪw’ṾiµÞ
입력을 문자열로 취합니다.
@ETHproductions 덕분에 -3 바이트
설명
“ṀSṪw’ṾiµÞ
µ - Separate chain into function “ṀSṪw’Ṿi and sort atom Þ.
Þ - Sort the input by
i - Each digit's index in:
“ṀSṪw’ - the literal 3145926870 ...
Ṿ - transformed into the list 3,1,4,5,9,2,6,8,7,0
3145926870
4 자리 base-250 문자열로 표현 될 수 있다고 생각 하지만 (10 바이트 대신 6 바이트가 소요됨) 압축 방법을 잘 모르겠습니다.
8 바이트 코드, -P
플래그는 +1
–!bMP+U
온라인으로 사용해보십시오! 입력을 문자열로받습니다.
–!bMP+'0 // Implicit input
¬ // Split the input into chars.
ñ // Sort each char in the resulting list by
!b // its index in
MP+U // Math.PI + the input.
-P // Join the result back into a single string.
// Implicit: output result of last expression
Dennis 덕분에 -1 바이트 (기존 0
의 입력에 사용하십시오 )
ØP;ṾiµÞ
ØP;ṾiµÞ - Main link: string s (char list)
µÞ - sort the characters, c, of s by:
i - first index of c in:
ØP - pi yield: 3.141592653589793
; - concatenate with left: [3.141592653589793, c]
Ṿ - un-evaluate: "3.141592653589793,c" (a char list with the digit character c)
if any c is 0 ^ it will then be to the right of all others
3820009
(의 SQRT는 14592468760081
) 아직 3
기지에 자리 250
.
Ṿ
당신의 설명에가 잘못됩니다.
r{P`#c}$
-3 : P
리터럴 대신 pi 변수를 기반으로하는 문자열을 사용하십시오 .
-2 : 인덱스를 찾는 것이 어쨌든 첫 번째 항목을 취하기 때문에 유니 균등화 할 필요가 없다고 결정했습니다.
-2 : x mod 65536을 사용한 흥미로운 접근법에 대해 jimmy23013 에게 감사합니다 .
설명:
r {P` # c} $ e # 입력 토큰을받습니다 re # 정수를 문자열로 취하십시오. {P` # c} e # 정렬 키 : P e # P를 누릅니다 (기본값은 3.141592653589793). `e # 문자열 표현으로 변환 우리가 만든 문자열에서 char의 인덱스를 찾으십시오. e # A '.' 정수에서 찾을 수 없지만 시프트는 이상적인 정렬을 유지하므로 중요하지 않습니다. e # '0'은 -1로 색인됩니다. ce # 인덱스를 char로 변환 e # 먼저 인덱스 % 65536을 계산 한 다음 char로 변환합니다. 그렇지 않으면 0이 -1, 즉 가장 작은 인덱스로 인덱스되기 때문에 이것이 필요합니다. e # 사전 정렬을 사용할 수 있으므로 정수로 다시 변환 할 필요가 없습니다. $ e # 키로 정렬
ci
정수로 다시 변환 할 수도 있습니다.
정규식 솔루션은 짧은
for(;~$c=_3145926870[$i++];)echo str_repeat($c,substr_count($argn,$c));
또는
for(;~$c=_3145926870[$i++];)echo str_pad("",substr_count($argn,$c),$c);
for(;~$c=$argn[$i++];)$j[strpos("3145926870",$c)].=$c;ksort($j);echo join($j);
$a=str_split($argn);usort($a,function($x,$y){return strpos($d="3145926870",$x)<=>strpos($d,$y);});echo join($a);
char*p="3145926870";s(*a,*b){return strchr(p,*a)-strchr(p,*b);}f(char*t){qsort(t,strlen(t),1,s);}
char
의 char*p
과char*t
YP99Y$uj!y=sY"
이 기호 ;
는 행렬에서 행 구분 기호 로 사용됩니다. 따라서 [1 2 3]
행 벡터이고, [1; 2; 3]
열 벡터이고, [1 2; 3 4]
정방 행렬이다. 후자는 또한 명확성을 위해 다음과 같이 표현 될 수있다.
[1 2;
3 4]
2325
예를 들어 입력 을 고려하십시오 .
YP % Push approximation of pi as a double (predefined literal)
% 3.14159265358979
99Y$ % Variable-precision arithmetic with 99 digits. Gives a string.
% The input 3.14159265358979 is recognized as representing pi
% STACK: '3.141592653589793238462 ··· 707'
u % Unique entries, keeping order of their first appearance
% STACK: '3.145926870'
j % Input line as a string
% STACK: '3.145926870', '2352'
! % Transpose
% STACK: '3.145926870', ['2'; '3';'5'; '2']
y % Duplicate the second-top element in the stack
% STACK: '3.145926870', ['2'; '3';'5'; '2'], '3.145926870'
= % Test for equality, with broadcast. This gives a matrix with
% all pairwise comparisons)
% STACK: '3.145926870', [0 0 0 0 0 0 1 0 0 0 0;
% 1 0 0 0 0 0 0 0 0 0 0;
% 0 0 0 0 1 0 0 0 0 0 0;
% 0 0 0 0 0 0 1 0 0 0 0]
s % Sum of each column
% STACK: '3.145926870', [1 0 0 0 1 0 2 0 0 0 0]
Y" % Run-length decoding. Implicitly display
% STACK: '3522'
f(char*s){for(char*d="3145926870",*p;*d;d++)for(p=s;*p;)*p++-*d||putchar(*d);}
i.OrderBy(c=>"145926870".IndexOf(c))
실제로 적절한 결과를 얻으려면 C # 대화 형에서 이것을 실행해야하지만 종료 상태 와 관련이 있다고 생각 합니다 . 변수 i는 실제로 입력 변수 (예 : 문자열 일 수 있음)이므로 기본적으로 메소드 매개 변수입니다.
코드 자체는 매우 간단하다고 생각합니다.
3
?
i
어딘가에 입력 해야 할지를 지정해야 합니다. 또한 C #을 말하는 경우 using System.Linq;
바이트 수 에 포함시켜야 합니다. 그러나 이것이 대화 형인 경우 언어를 C #이 아닌 C # 대화 형으로 지정해야합니다.
0
표준 길이 pi 상수에는 존재하지 않는다는 것을 깨달았습니다 .
Σтžsyk
Σтžsyk
Σ Sort by the result of code
тžs Push 100 digits of pi
yk Index of digit in pi
Σ
도전보다 새로운 것으로 표시해야합니다.
String c(String s){String r="";for(char i:"3145926870".toCharArray())r+=s.replaceAll("[^"+i+"]","");return r;}
설명:
String c(String s){ // Method with String parameter and String return-type
String r=""; // Result String
for(char i:"3145926870".toCharArray()) // Loop over the characters of "3145926870"
r+=s.replaceAll("[^"+i+"]",""); // Append the result-String with all the occurrences of the current character
// End of loop (implicit / single-line body)
return r; // Return the result-String
} // End of method
테스트 코드 :
class M{
static String c(String s){String r="";for(char i:"3145926870".toCharArray())r+=s.replaceAll("[^"+i+"]","");return r;}
public static void main(String[] a){
System.out.println(c("12345678908395817288391"));
}
}
산출:
33311145599922688888770
for(;(~$d=$argn[$j++])||~$c=_3145926870[$i+++$j=0];)$c==$d&&print$d;
여전히 preg_filter에 의해 맞았 지만 꽤 좋았다고 생각했습니다. 누군가가 몇 바이트를 골프를 칠 수 있습니다.
$c!=$d?:print$d
대안으로 $c==$d&&print$d
순간에
_3145926870
` "3145926870"대신 1 바이트를 절약
for(;(~$d=$argn[$j++])?:~$c=_3145926870[++$i+$j=0];$c!=$d?:print$d);
작동하는 대안도
*.comb.sort:{3145926870.index: $_}
*\ # WhateverCode lambda (this is the parameter)
.comb # split into digits
.sort: { # sort by
3145926870.index: $_ # its index in this number
}