負でない数を指定するとn
、pin
内の最初の出現によっての数字をソートします。
入力は、関数cli引数、またはSTDINを介して、文字列、char []または整数として取得できます。戻り値、終了ステータス、またはSTDOUTを介して出力できます。
負でない数を指定するとn
、pin
内の最初の出現によっての数字をソートします。
入力は、関数cli引数、またはSTDINを介して、文字列、char []または整数として取得できます。戻り値、終了ステータス、またはSTDOUTを介して出力できます。
回答:
ox+.n0
-1 Leaky Nunに感謝:入力は、0
必要に応じて提供します。ジャクベの
おかげで些細な-1 :バックティックは必要ありません(ああ、どうやってそれを見逃したのですか?!?)。
0
最後に必要はありません。入力がある場合は0
、0
入力によって提供されることになります。入力にがなければ0
、それは問題になりません。
ox+.n0
3
findが返さ-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
デニスのおかげで-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 of 14592468760081
)はまだ3
baseの数字250
です。
Ṿ
あなたの説明では、紛失しています。
r{P`#c}$
-3:P
リテラルではなく、pi変数に基づいた文字列を使用します。
-2:インデックスを見つけるにはとにかく最初に出現するため、一意化する必要はまったくありません。
-2:x mod 65536を使用した興味深いアプローチについては、jimmy23013に感謝します。
説明:
r {P`#c} $ e#入力トークンを受け取ります re#整数を文字列として受け取ります {P`#c} e#ソートキー: P e#Push P(デフォルトは3.141592653589793) `e#文字列表現に変換 #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
n=gets;"3145926870".each_char{|c|$><<c*n.count(c)}
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#インタラクティブでこれを実行する必要がありますが、これはあなたが意図したものだと思います exit statusでます。変数iは、実際には入力変数(たとえば、文字列)であるため、基本的にはメソッドパラメーターです。
コード自体はかなり単純だと思います。
3
ですか?
i
入力として受け取ることができるように、どこにあるのかを指定する必要があります。また、C#と言っている場合はusing System.Linq;
、バイトカウントに含める必要があります。ただし、これがInteractiveの場合は、C#だけでなくC#Interactiveとして言語を指定する必要があります。
0
標準長パイ定数には存在しないことを認識しなければなりませんでした。
Σтž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
}