给定一个非负数n
,请n
按pi中第一个出现的数字对其进行排序。
输入可以通过函数cli参数或STDIN获取,并可以作为字符串,char []或整数。您可以通过返回值,退出状态或STDOUT输出。
给定一个非负数n
,请n
按pi中第一个出现的数字对其进行排序。
输入可以通过函数cli参数或STDIN获取,并可以作为字符串,char []或整数。您可以通过返回值,退出状态或STDOUT输出。
Answers:
0
。如果输入中包含0
,则输入0
将提供;如果输入不带0
,则无所谓。
ox+.n0
感谢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位基数250的字符串(这意味着它将占用6个字节而不是10个字节),但是我不确定如何将其压缩。
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
是base中的数字250
。
Ṿ
在你的解释是错误的。
r{P`#c}$
-3:使用基于 P
pi变量而不是文字。
-2:决定我根本不需要进行唯一性化,因为找到索引无论如何都是第一次出现。
-2:感谢jimmy23013使用x mod 65536的有趣方法。
说明:
r {P`#c} $ e#接受输入令牌 re#以整数作为字符串 {P`#c} e#排序键: P e#按下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
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'
i.OrderBy(c=>"145926870".IndexOf(c))
实际上,您必须在C#交互中执行此操作才能获得正确的结果,但是我想这就是您对exit status的含义。变量我实际上是输入变量(例如可以是字符串),因此基本上是方法参数。
我认为代码本身非常简单。
3
呢?
i
在某处,以便可以将其用作输入。另外,如果您要说的是C#,则必须将其包括using System.Linq;
在字节数中。但是,如果这是Interactive,则应将语言指定为C#Interactive,而不仅仅是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
}