ยิ่งใหญ่กว่าสิ่งที่คาว


45

รับสตริง N ความยาวของเครื่องหมายที่น้อยกว่าและมากกว่า ( <, >), แทรกจำนวนเต็ม 0 ถึง N ที่จุดเริ่มต้นและสิ้นสุดและระหว่างสัญญาณแต่ละคู่เช่นกันว่าความไม่เท่าเทียมกันทั้งหมดมีความพึงพอใจ เอาต์พุตสตริงผลลัพธ์ หากมีเอาต์พุตที่ถูกต้องหลายเอาต์พุตให้ส่งเอาต์พุตใด ๆ (และเพียงหนึ่ง) ของเอาต์พุต

ตัวอย่างเช่น

<<><><<

มี 7 อักขระดังนั้นต้องใส่ตัวเลขทั้งหมดตั้งแต่ 0 ถึง 7 ผลลัพธ์ที่ถูกต้องคือ

2<3<4>1<5>0<6<7

เพราะความไม่เท่าเทียมกันทั้งหมดถูกนำมาทีละครั้ง

2<3
3<4
4>1
1<5
5>0
0<6
6<7

เป็นเรื่องจริง

2 < 3 < 4 > 1 < 5 > 0 < 6 < 7ถ้าต้องการให้การส่งออกอาจมีช่องว่างรอบสัญญาณเช่น

รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ

กรณีทดสอบ

บรรทัดแรกหลังจากบรรทัดว่างคืออินพุตและบรรทัดถัดไปเป็นตัวอย่างเอาต์พุตที่ถูกต้อง

[empty string]
0

<
0<1

>
1>0

<<
0<1<2

<>
1<2>0

><
1>0<2
2>0<1

>>
2>1>0

<<<
0<1<2<3

><>
1>0<3>2

>><
3>2>0<1
3>1>0<2
2>1>0<3

>>>
3>2>1>0

>>><<<
3>2>1>0<4<5<6
6>3>1>0<2<4<5
4>2>1>0<3<5<6
4>3>1>0<2<5<6

<<><><<
2<3<4>1<5>0<6<7

>><><>>
7>6>0<5>1<4>3>2

<<<<<<<<<<<<<<
0<1<2<3<4<5<6<7<8<9<10<11<12<13<14

>><<<<><>><><<
6>5>4<7<8<9<10>3<11>2>1<12>0<13<14
14>5>4<7<8<9<10>3<11>2>1<12>0<13<6

4
จะมีเอาต์พุตที่ถูกต้องเสมอหรือไม่?
mbomb007

3
@ mbomb007 ใช่ มีอย่างน้อยหนึ่งเสมอ
งานอดิเรกของ Calvin

23
ฉันต้องการเห็นบางคนตั้งโปรแกรมนี้ใน> <>! นั่นจะยอดเยี่ยม (และฉันเดาว่าน่าขัน)
Soren

นี่เป็นเกมที่สนุก แต่ท้าทายจริงๆขอบคุณ op
Shaun Wild

คำตอบ:


29

เรติน่า 20 ไบต์

จำนวนไบต์ถือว่าการเข้ารหัส ISO 8859-1


$.'
S`>
%O#`\d+
¶
>

ลองออนไลน์! (บรรทัดแรกเปิดใช้งานชุดการทดสอบที่แยกบรรทัดด้วยฟีด)

คำอธิบาย

วิธีง่ายๆในการค้นหาการเปลี่ยนแปลงที่ถูกต้องคือการเริ่มต้นด้วยการแทรกตัวเลขจาก0เป็นNตามลำดับจากนั้นกลับตัวเลขที่ล้อมรอบแต่ละสตริงย่อยของ>s ใช้<><<>>><<เป็นตัวอย่าง:

0<1>2<3<4>5>6>7<8<9
  ---   -------      these sections are wrong, so we reverse them
0<2>1<3<7>6>5>4<8<9

ทั้งสองงานนั้นค่อนข้างง่ายใน Retina แม้ว่าสิ่งที่เราสามารถทำได้จริง ๆ ก็คือสตริง เราสามารถบันทึกไบต์เพิ่มเติมโดยการใส่ตัวเลขจากNลงไป0และกลับส่วนที่ล้อมรอบ<แทน แต่หลักการเหมือนกัน

ด่าน 1: การเปลี่ยนตัว


$.'

เราเริ่มต้นด้วยการแทรกความยาวของ$'(ส่วนต่อท้ายคือทุกอย่างหลังการแข่งขัน) ลงในทุกตำแหน่งที่เป็นไปได้ในอินพุต แทรกตัวเลขจากลงไปN0

ด่าน 2: แยก

S`>

เราแยกอินพุตรอบ ๆ>เป็นบรรทัดแยกดังนั้นแต่ละบรรทัดเป็นหมายเลขเดี่ยวหรือรายการหมายเลขที่รวมเข้าด้วย<กัน

ด่าน 3: เรียงลำดับ

%O#`\d+

ภายในแต่ละบรรทัด ( %) เราเรียงลำดับ ( O) ตัวเลข ( \d#) ตามค่าตัวเลข ( #) เนื่องจากเราใส่ตัวเลขในลำดับตัวเลขกลับด้าน

ด่าน 4: การเปลี่ยนตัว

¶
>

เราเปลี่ยน linefeeds เป็น>อีกครั้งเพื่อเข้าร่วมทุกอย่างกลับเป็นบรรทัดเดียว แค่นั้นแหละ.

ในฐานะที่เป็นบันทึกย่อด้านฉันได้รับการหมายถึงการเพิ่มวิธีที่จะใช้%กับตัวคั่นอื่น ๆ กว่า linefeeds หากฉันได้ทำไปแล้วการส่งนี้จะเป็น14ไบต์เพราะจากนั้นสามขั้นตอนสุดท้ายจะลดลงเป็นขั้นตอนเดียว:

%'>O#`\d+

นั่นเป็นเช่นเดียวกับขนาดของฉันหนึ่งครั้ง? ทำได้ดีมาก
ThreeFx

@ThreeFx เพราะฉันไม่ได้ใช้กำลังดุร้าย ;) คำอธิบายกำลังจะมาในอีกสักครู่
Martin Ender

22

> <> , 46 43 35 + 4 สำหรับ -s== 39 ไบต์

0&l?!v:3%?\&:n1+$o!
+nf0.>&n; >l&:@

นี่เป็นการใช้งานอัลกอริทึมของ xnorใน> <>

ใช้สตริงอินพุตบนสแต็ก ( -sแฟล็กที่มีตัวแปลมาตรฐาน)

คุณสามารถลองมันออกมาในล่ามออนไลน์


2
> <> ดูเหมือนว่าภาษาที่เหมาะสมสำหรับความท้าทายนี้
Anaximander

21

> <> , 26 + 4 = 30 ไบต์

l22pirv
1+$2po>:3%::2g:n$-

ลองออนไลน์! +4 ไบต์สำหรับ-s=แฟล็ก - หากเพิ่ง-sเป็นไร (หมายความว่าแฟล็กจะต้องถูกดร็อปทั้งหมดสำหรับอินพุตว่าง) ดังนั้นนั่นจะเป็น +3 แทน

สมมติว่าอินพุต STDIN ว่างเปล่าดังนั้นจึงiสร้าง -1 (ซึ่งทำกับ EOF) ข้อผิดพลาดของโปรแกรมที่พยายามพิมพ์ -1 เป็น char

ใช้ max-of-nums-so-far-for- >, min-of-nums-so-far-for- <approach

[Setup]
l22p         Place (length of stack) = (length of input) into position (2, 2) of
             the codebox. Codebox values are initialised to 0, so (0, 2) will
             contain the other value we need.
i            Push -1 due to EOF so that we error out later
r            Reverse the stack
v            Move down to the next line
>            Change IP direction to rightward

[Loop]
:3%          Take code point of '<' or '>' mod 3, giving 0 or 2 respectively
             (call this value c)
:            Duplicate
:2g          Fetch the value v at (c, 2)
:n           Output it as a number
$-1+         Calculate v-c+1 to update v
$2p          Place the updated value into (c, 2)
o            Output the '<' or '>' as a char (or error out here outputting -1)

โปรแกรมที่ออกอย่างหมดจดและไม่ทำให้สมมติฐานเกี่ยวกับ STDIN คือ 4 ไบต์พิเศษ:

l22p0rv
p:?!;o>:3%::2g:n$-1+$2


11

Perl, 29 ไบต์

รวมถึง +2 สำหรับ -lp

เรียกใช้ด้วยอินพุตบน STDIN เช่น

order.pl <<< "<<><><<"

เอาท์พุท:

0<1<7>2<6>3<4<5

order.pl:

#!/usr/bin/perl -lp
s%%/\G</?$a++:y///c-$b++%eg

คำอธิบาย

มีสองตัวนับเริ่มต้นสูงสุดด้วยความยาวสตริงนาทีเริ่มต้นด้วย 0 จากนั้นในแต่ละขอบเขต (รวมถึงจุดเริ่มต้นและจุดสิ้นสุดของสตริง) หากเป็นเพียงก่อน<ใส่ขั้นต่ำที่มีและเพิ่มขึ้น 1 มิฉะนั้นใส่สูงสุดมีและลดลง โดย 1 (ในตอนท้ายของสตริงมันไม่สำคัญว่าตัวนับใดที่คุณใช้เนื่องจากทั้งคู่เหมือนกัน)


s{}{/\G/...}ฉันไม่เคยเห็นแบบนั้นมาก่อนมันยอดเยี่ยม
primo

10

Python 2, 67 ไบต์

f=lambda s,i=0:s and`i+len(s)*(s>'=')`+s[0]+f(s[1:],i+(s<'>'))or`i`

ฟังก์ชั่นวนซ้ำ ตอบสนองผู้ประกอบการแต่ละในการเปิดโดยการใส่ค่าที่ไม่ได้ใช้ที่เล็กที่สุดxสำหรับและยิ่งใหญ่ที่สุดสำหรับx< x>ค่าที่ไม่ได้ใช้น้อยที่สุดจะถูกเก็บไว้ในiและอัพเดทและค่าที่ไม่ได้ใช้มากที่สุดจะถูกอนุมานจากiและความยาวที่เหลืออยู่


1
ฉันคิดว่าคุณสามารถทำได้(s>'=')แทนที่จะ(s>='>')บันทึกไบต์?
mathmandan

@ Mathathand ขอบคุณ! มันแปลกที่<และ>ไม่ codepoints ติดต่อกัน
xnor

ตกลงกัน! แต่ผมคิดว่าผมสามารถดูวิธีการมันจะทำให้ความรู้สึกที่มี=ระหว่างและ< >
คณิตศาสตร์

8

Python 2, 163 137 ไบต์

from random import*
def f(v):l=len(v)+1;N=''.join(sum(zip(sample(map(str,range(l)),l),v+' '),()));return N if eval(N)or len(v)<1else f(v)

สับเปลี่ยนตัวเลขจนกว่าข้อความจะเป็นTrueเช่นนั้น

ลองมัน.


นี่เป็นคำตอบที่ชัดเจนที่สุด
moopet

7

APL, 33 ไบต์

⍞←(S,⊂''),.,⍨-1-⍋⍋+\0,1-2×'>'=S←⍞

⍋⍋ มีประโยชน์ผิดปกติ

คำอธิบาย

⍞←(S,⊂''),.,⍨-1-⍋⍋+\0,1-2×'>'=S←⍞
                                   ⍞ read a string from stdin      '<<><><<'
                                 S←   store it in variable S
                             '>'=     test each character for eq.   0 0 1 0 1 0 0
                         1-2×         1-2×0 = 1, 1-2×1 = ¯1         1 1 ¯1 1 ¯1 1 1
                                      (thus, 1 if < else ¯1)
                       0,             concatenate 0 to the vector   0 1 1 ¯1 1 ¯1 1 1
                     +\               calculate its running sum     0 1 2 1 2 1 2 3
                   ⍋                 create a vector of indices    1 2 4 6 3 5 7 8
                                      that sort the vector in
                                      ascending order
                 ⍋                   do it again: the compound ⍋⍋ 1 2 5 3 6 4 7 8
                                      maps a vector V to another
                                      vector V', one permutation of
                                      the set of the indices of V,
                                      such that
                                            V > V  => V' > V'.
                                             i   j     i    j
                                      due to this property, V and V'
                                      get sorted in the same way:
                                          ⍋V = ⍋V' = ⍋⍋⍋V.
              -1-                     decrement by one              0 1 4 2 5 3 6 7
      ⊂''                            void character vector         ⊂''
    S,                                concatenate input string     '<<><><<' ⊂''
   (     ),.,⍨                       first concatenate each        0 '<' 1 '<' 4 '>' 2 \
                                     element of the result vector  '<' 5 '>' 3 '<' 6 '<' \
                                     with the cordisponding        7 ⊂''
                                     element in the input string,
                                     then concatenate each result
⍞←                                  write to stdout

3
ต้นคริสต์มาส ( ⍋⍋) ทำอะไร?
Conor O'Brien

คือเกรดขึ้นซึ่งส่งกลับบ่งชี้ในการเรียงลำดับ ด้วยการทำสองครั้งคุณจะได้1จำนวน2ที่น้อยที่สุดและอีกจำนวนที่น้อยที่สุดคือ ect
Zwei

@ ConorO'Brien แก้ไขด้วยคำอธิบายสั้น ๆ
Oberon

ใช่สั้นมาก
Conor O'Brien

7

JavaScript (ES6), 74 56 ไบต์

s=>s.replace(/./g,c=>(c<'>'?j++:l--)+c,j=0,l=s.length)+j

0...Nเริ่มต้นด้วยชุดของตัวเลข ในแต่ละขั้นตอนจะใช้เวลามากที่สุด ( l) หรืออย่างน้อย ( j) ของจำนวนที่เหลืออยู่ หมายเลขถัดไปจะต้องเป็นคำจำกัดความน้อยกว่าหรือมากกว่านั้น แก้ไข: บันทึกขนาดใหญ่ถึง 18 ไบต์ด้วย @Arnauld


3
คุณสามารถใช้replace? อาจจะs=>s.replace(/./g,c=>(c<'>'?j++:l--)+c,j=0,l=s.length)+j
Arnauld

@Arnauld ... และฉันคิดว่าฉันทำได้ดีในการเล่นกอล์ฟครั้งแรกของฉัน (ซึ่งไม่สามารถทดแทนได้replace) ถึง 74 ไบต์ ...
Neil

5

Pyth - 19 ไบต์

ไชโยสำหรับการเปรียบเทียบการผูกมัด!

!QZhv#ms.idQ.p`Mhl

ไม่ทำงานเพราะความปลอดภัยทางออนไลน์


4

2sable , 20 ไบต์

gUvy'<Qi¾¼ëXD<U}y}XJ

คำอธิบาย

gU                     # store input length in variable X
  v              }     # for each char in input
   y'<Qi               # if current char is "<"
        ¾¼             # push counter (initialized as 0), increase counter
          ëXD<U}       # else, push X and decrease value in variable X
                y      # push current char
                  XJ   # push the final number and join the stack

ลองออนไลน์!

สำหรับN <10อาจเป็น 14 ไบต์:

ÎvyN>}J'<¡í'<ý

4

C #, 102 99 ไบต์

string f(string s){int i=0,j=s.Length;var r="";foreach(var c in s)r=r+(c<61?i++:j--)+c;return r+i;}

Ungolfed:

string f(string s)
{
    int i = 0, j = s.Length;    // Used to track the lowest and highest unused number.
    var r = "";                 // Start with the empty string.

    foreach (var c in s)        // For each character in the input string:
        r = r +                 // Append to the result:
            (c < 61             // If the current character is '<':
                ? i++           // Insert the lowest unused number,
                : j--)          // otherwise, insert the highest unused number.
            + c;                // And append the current character.

    return r + i;               // Return the result with the last unused number appended.
}

ฉันเหนื่อยแล้วฉันอาจจะพลาดบางสิ่งบางอย่าง แต่จะไม่เปลี่ยนr = r +ส่วนหนึ่งเป็นงานผสมช่วยประหยัดสองสามไบต์?
Carcigenicate

2
ไม่มี - เดอะr+ส่วนที่เกี่ยวกับด้านขวามือบอกเรียบเรียงสิ่งทั้งหมดเป็นสตริงเพื่อแสดงสายอักขระที่cถูกนำมาใช้ ถ้าผมใช้r+=ที่?:ส่วนหนึ่งจะประเมินไปยังintค่าลำดับของcจะถูกเพิ่มเข้าไปที่และเพียงแล้วมันจะถูกแปลงเป็นตัวแทนสตริง
Scepheo

4

Java 8, 126 125 ไบต์

s->{int t=s.replaceAll("<","").length(),y=t-1;String r=t+++"";for(char c:s.toCharArray())r+=(c+"")+(c<61?t++:y--);return r;};

ฉันไม่คิดว่ามันจะใช้งานได้ดี

โปรแกรมทดสอบ Ungolfed

public static void main(String[] args) {
    Function<String, String> function = s -> {
        int t = s.replaceAll("<", "").length(), y = t - 1;
        String r = t++ + "";
        for (char c : s.toCharArray()) {
            r += (c + "") + (c < 61 ? t++ : y--);
        }
        return r;
    };

    System.out.println(function.apply("<<><><<"));
    System.out.println(function.apply(">>><<<"));
    System.out.println(function.apply(">>>"));
    System.out.println(function.apply("<<<"));
    System.out.println(function.apply(">><><>>"));
}

คุณสามารถเปลี่ยน.replaceAllไป.replaceและลบวงเล็บรอบ(c+"")เพื่อประหยัด 5 ไบต์
Kevin Cruijssen

@KevinCruijssen ไม่ได้ประมาณ 5 ไบต์เลยฮ่า ๆ ๆ
Shaun Wild

เมื่อใช้ภาษากอล์ฟที่เหมาะสม 5 ไบต์คือความแตกต่างระหว่างอันดับที่ 5 และ 2 ด้วยจาวามันเป็นความแตกต่างระหว่างสถานที่สุดท้ายโดยไกลและเพียงแค่สถานที่สุดท้าย
Shaun Wild

Java เกือบตลอดเวลาจะมีความท้าทายของการเขียนโค้ด แต่เหตุผลที่เราโพสต์คำตอบ Java เพื่อเริ่มต้นคือเพื่อความสนุกในการเขียนสั้นที่สุด ฉันมีความสุขโดยส่วนตัวถ้ารหัส Java ของฉันไปจาก 500 ถึง 499 ในแง่ของไบต์ ; P
Kevin Cruijssen

โดยทั่วไปเราไม่สนใจทั้งหมดกว่าคู่แข่งและเพียงแค่แข่งขันกับหรือ Java / C # ส่ง ฯลฯ ..
ฌอนป่า

4

เยลลี่ , 27 14 12 ไบต์

พอร์ตของ @Martin Enders CJam โซลูชัน
-2 ไบต์ขอบคุณ @Dennis

żJ0;µFṣ”<Uj”<

ทดสอบที่TryItOnline

อย่างไร?

żJ0;Fṣ”<Uj”< - main link takes an argument, the string, e.g. ><>
 J           - range(length(input)), e.g. [1,2,3]
  0          - literal 0
   ;         - concatenate, e.g. [0,1,2,3]
ż            - zip with input, e.g. [[0],">1","<2",">3"]
    F        - flatten, list, e.g. "0>1<2>3"
      ”<  ”< - the character '<'
     ṣ       - split, e.g. ["0>1","2>3"]
        U    - upend (reverse) (implicit vectorization), e.g. ["1>0","3>2"]
         j   - join, e.g. "1>0<3>2"

วิธีการก่อนหน้านี้เป็นวิชาคณิตศาสตร์ที่น่าสนใจ แต่ก็ไม่ค่อยน่าสนใจนัก ...

=”>U
LR!×ÇĖP€S‘
L‘ḶŒ!ị@ÇðżF

สิ่งนี้ใช้ระบบฐานแฟกทอเรียลเพื่อหาดัชนีของพีชคณิตของ [0, N] ที่จะตอบสนองสมการ


1
Uเวกเตอร์เพื่อให้คุณไม่จำเป็นต้อง żJ0;บันทึกไบต์อื่น
Dennis

4

Clojure, 152 132 126 ไบต์

(defn f[s](loop[l 0 h(count s)[c & r]s a""](if c(case c\<(recur(inc l)h r(str a l c))(recur l(dec h)r(str a h c)))(str a l))))

บันทึกจำนวนไบต์ที่เป็นธรรมโดยกำจัดช่องว่างให้มากที่สุดเท่าที่จะทำได้ ฉันรู้ว่าช่องว่างไม่จำเป็นต้องแยกวงเล็บออกจากอักขระอื่น

โดยทั่วไปแล้วพอร์ต Clojure ของคำตอบของ @ Scepheo ทำงานเหมือนกัน

recurสายเหล่านั้นเป็นนักฆ่า! ฉันคิดว่าฉันสามารถใช้อะตอมในการทำความสะอาด การswap!โทรที่ต้องใช้เพื่อเพิ่มอะตอมในจำนวน: /

ขอบคุณ @amalloy ที่ช่วยฉันสักสองสามไบต์

Ungolfed:

(defn comp-chain [chain-str]
  (loop [l 0 ; Lowest number
         h (count chain-str) ; Highest number
         [c & cr] chain-str ; Deconstruct the remaining list
         a ""] ; Accumulator
    (if c ; If there's any <>'s left
      (if (= c \<) ; If current char is a <...
        (recur (inc l) h cr (str a l c)) ; Add l to a, and inc l
        (recur l (dec h) cr (str a h c))) ; Add h to a, and dec h
      (str a l)))) ; Add on the remaining lowest number, and return

ยินดีต้อนรับสู่เว็บไซต์!
DJMcMayhem

@DJMcMayhem ขอบคุณ หวังว่าครั้งต่อไปฉันจะสามารถหาวิธีแก้ปัญหาของตัวเองแทนที่จะพูดถึงคำตอบอื่น
Carcigenicate

คุณสามารถบันทึกสองช่องว่างมากขึ้นในloopการผูกก่อนและหลังs aนอกจากนี้คุณยังสามารถโกนบิตโดยการแทนที่ifต้นไม้ที่มี:case (case c \< (recur ...) nil (str ...) (recur ...))และแน่นอนcrอาจเป็นชื่อที่สั้นกว่า
amalloy

@amalloy คะแนนดีขอบคุณ ฉันจะอัปเดตเมื่อฉันใช้แล็ปท็อป
Carcigenicate

3

Haskell, 162 ไบต์

import Data.List
(a:b)%(c:d)=show c++a:b%d
_%[x]=show x
f l=map(l%).filter(l#)$permutations[0..length l]
(e:f)#(x:y:z)=(e!x)y&&f#(y:z)
_#_=0<1
'>'!x=(>)x
_!x=(<)x

นี่คือความยาวของ friggin



2

ทับทิมขนาด 135 ไบต์

g=gets
puts g.nil?? 0:[*0..s=g.size].permutation.map{|a|a.zip(g.chars)*""if s.times.map{|i|eval"%s"*3%[a[i],g[i],a[i+1]]}.all?}.compact

หมายเหตุ: ความซับซ้อนของเวลามีขนาดใหญ่ (O (n!))


2

Python 2, 176 172 ไบต์

มันไม่สั้นมากเมื่อเทียบกับคนอื่น ๆ แต่ฉันมีความสุขที่ฉันแก้ไขมันได้อย่างรวดเร็ว

from itertools import*
def f(s):
 for p in permutations(range(len(s)+1)):
    n=list(s);p=list(p);t=[p.pop()]+list(chain(*zip(n,p)));r="".join(map(str,t))
    if eval(r):return r

ลองออนไลน์

Ungolfed:

from itertools import*
def f(s):
    n=list(s);R=range(len(s)+1)
    for p in permutations(R):
        p=list(p)
        r=[p.pop()]
        t=n+p
        t[::2]=n
        t[1::2]=p
        r="".join(map(str,r+t))
        if eval(r):return r

ลองออนไลน์


ส่วน interlace สามารถทำให้สั้นลงได้มากzip
Maltysen

@Maltysen ไม่สั้นกว่านี้เพราะรายการไม่ได้มีความยาวเท่ากัน (ฉันยังต้องpop) แต่มันก็สั้นกว่านิดหน่อย ถ้าN<10ฉันจะทำให้การทำให้สตริงสั้นลง
mbomb007

1

PHP, 190 ไบต์

สุ่มแบบสุ่มจนกว่าจะมีโซลูชันที่ถูกต้องอยู่

$x=range(0,$l=strlen($q=$argv[1]));while(!$b){$b=1;$t="";shuffle($x);for($i=0;$i<$l;){$t.=$x[$i].$q[$i];if(($q[$i]==">"&$x[$i]<$x[$i+1])|($q[$i]=="<"&$x[$i]>$x[1+$i++]))$b=0;}}echo$t.$x[$i];

381 Bytes รับวิธีแก้ปัญหาทั้งหมดแล้วเลือกหนึ่งตัว

<?php $d=range(0,strlen($q=$argv[1]));echo $q."\n";$e=[];function f($t=""){global$e,$d,$q;foreach($d as$z){preg_match_all("#\d+#",$t,$y);if(in_array($z,$y[0]))continue;$p=preg_match_all("#[<>]#",$t);$g="";if(preg_match("#\d+$#",$t,$x)){if(($q[$p]==">"&$x[0]<$z)|($q[$p]=="<"&$x[0]>$z))continue;$g=$q[$p];}strlen($q)==$p+1|!$q?$e[]=$t.$g.$z:f($t.$g.$z);}}f();echo$e[array_rand($e)];
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.