รับจำนวนที่ไม่ใช่เชิงลบn
เรียงลำดับตัวเลขของn
โดยเกิดขึ้นครั้งแรกของพวกเขาในปี่
การป้อนข้อมูลสามารถนำมาผ่านการโต้แย้งฟังก์ชั่น cli หรือ STDIN และเป็นสตริงถ่าน [] หรือจำนวนเต็ม คุณสามารถส่งออกผ่านทางค่าตอบแทนสถานะทางออกหรือ STDOUT
รับจำนวนที่ไม่ใช่เชิงลบn
เรียงลำดับตัวเลขของn
โดยเกิดขึ้นครั้งแรกของพวกเขาในปี่
การป้อนข้อมูลสามารถนำมาผ่านการโต้แย้งฟังก์ชั่น cli หรือ STDIN และเป็นสตริงถ่าน [] หรือจำนวนเต็ม คุณสามารถส่งออกผ่านทางค่าตอบแทนสถานะทางออกหรือ STDOUT
คำตอบ:
ox+.n0
-1 ขอบคุณLeaky Nun : อินพุตจะให้ข้อมูล0
ถ้าจำเป็น
Trivial -1 ขอบคุณJakube : ไม่ต้องการ Backtick (อาฉันพลาดได้ยังไงดี?!?)
0
ตอนท้าย ถ้าใส่มี0
ที่0
จะให้บริการโดยการป้อนข้อมูล; หากอินพุตไม่มี0
มันจะไม่สำคัญ
ox+.n0
3
เนื่องจาก find จะกลับมา-1
เมื่อไม่พบรายการ
บันทึก 1 ไบต์ขอบคุณLeaky Nunสังเกตว่าการกรองรายการที่ซ้ำซ้อนออกไปนั้นไม่จำเป็น
ที่บันทึกไว้ 2 ไบต์ขอบคุณที่Adnan
ž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
for 9 bytes
žq
แทนได้13žs
หรือไม่?
“ṀSṪw’ṾiµÞ
รับอินพุตเป็นสตริงของตัวเลข
-3 ไบต์ขอบคุณ @ETHproductions
คำอธิบาย
“Ṁ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
สามารถแสดงเป็นสตริงฐานสี่หลัก -250 (หมายถึงมันใช้เวลา 6 ไบต์แทน 10) แต่ฉันไม่แน่ใจว่าจะบีบอัดได้อย่างไร
8 ไบต์ของรหัส +1 สำหรับ-P
ธง
–!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
f=
s=>[...s].sort((a,b)=>k[a]-k[b],k=`9150236874`).join``
<input oninput=o.textContent=f(this.value)><pre id=o>
ใช้สตริงสำหรับ I / O
-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: ขอบคุณjimmy23013สำหรับแนวทางที่น่าสนใจโดยใช้ x mod 65536
คำอธิบาย:
r {P` # c} $ e # รับโทเค็นอินพุต re # ใช้จำนวนเต็มเป็นสตริง {P` # c} e # คีย์การเรียงลำดับ: P e # Push P (ค่าเริ่มต้นคือ 3.141592653589793) `e # แปลงเป็นตัวแทนสตริง # e # ค้นหาดัชนีของ char ในสตริงที่เราทำ e # A '.' จะไม่ถูกค้นพบในจำนวนเต็ม แต่มันไม่สำคัญเนื่องจากการเลื่อนจะรักษาการเรียงลำดับในอุดมคติ e # A '0' จะถูกจัดทำดัชนีเป็น -1 ce # แปลงดัชนีเป็นถ่าน e # นี่เป็นครั้งแรกที่คำนวณดัชนี% 65536 แล้วแปลงเป็นถ่าน เราต้องการสิ่งนี้เพราะมิฉะนั้น 0 จะถูกจัดทำดัชนีเป็น -1 นั่นคือดัชนีที่เล็กที่สุด e # เราไม่จำเป็นต้องแปลงกลับเป็นจำนวนเต็มเนื่องจากเราสามารถใช้การเรียงลำดับพจนานุกรม $ e # เรียงลำดับด้วยรหัส
ci
จะแปลงกลับเป็นจำนวนเต็ม
แก้ปัญหา regexสั้น
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 # โต้ตอบเพื่อให้ได้ผลลัพธ์ที่ถูกต้อง แต่ผมคิดว่านี่คือสิ่งที่คุณหมายกับสถานะทางออก ตัวแปรiจริง ๆ แล้วคือตัวแปรอินพุต (สามารถเป็นตัวอย่างของสตริงได้) ดังนั้นโดยพื้นฐานแล้วมันคือพารามิเตอร์เมธอด
ฉันคิดว่ารหัสนั้นค่อนข้างตรงไปตรงมา
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
Σ
ใหม่กว่าความท้าทาย
บันทึก 1 ไบต์ขอบคุณ Titus
while(~$d=_3145926870[++$i])echo preg_filter("/[^$d]/",'',$argn);
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
#(sort-by(zipmap"3145926870"(range))%)
อินพุตในสตริงส่งคืนลำดับของอักขระ zipmap
สร้างวัตถุ "พจนานุกรม" ซึ่งสามารถใช้ในบริบทของฟังก์ชันได้เช่นกัน
(f "1234")
(\3 \1 \4 \2)
#(filter(set %)"3145926870")
หากป้อนตัวเลขถูกรับประกันว่าจะไม่ซ้ำกันแล้วคุณก็สามารถทำได้
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 Byte
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
}
{x@<"3145926870"?x}
คำอธิบาย:
{ } /function(x)
"3145926870"?x /for each x: "3145926870".index(x)
< /get indices with which to sort
x@ /sort x by those indices