ফিশিংয়ের চেয়ে বৃহত্তর চেয়ে কম


45

কম দৈর্ঘ্যের এন স্ট্রিং কম এবং এর চেয়ে বড় চিহ্নগুলির (< , >) দিয়ে দেওয়া হয়, শুরুতে এবং শেষে N এর মধ্য দিয়ে পূর্ণসংখ্যা 0 সন্নিবেশ করান এবং প্রতিটি জোড় চিহ্নের মধ্যে এমন সমস্ত বৈষম্য সন্তুষ্ট থাকে। ফলস্বরূপ স্ট্রিং আউটপুট। যদি একাধিক বৈধ আউটপুট থাকে তবে সেগুলির মধ্যে যে কোনও একটি (এবং কেবল একটি) আউটপুট করুন।

উদাহরণ স্বরূপ

<<><><<

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 হ্যাঁ সর্বদা কমপক্ষে একটি আছে।
ক্যালভিনের

23
আমি এই>>> তে কারও প্রোগ্রাম দেখতে চাই! এটি দুর্দান্ত হবে (এবং আমি কী উপহাস করব?)
সোরেন

এটি সত্যিই মজাদার কিন্তু সহজ চ্যালেঞ্জ ছিল, ধন্যবাদ ওপ
শন ওয়াইল্ড

উত্তর:


29

রেটিনা , 20 বাইট

বাইট গণনাটি আইএসও 8859-1 এনকোডিং ধরেছে।


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

এটি অনলাইন চেষ্টা করুন! (প্রথম লাইন একটি লাইনফিড-বিচ্ছিন্ন পরীক্ষা-স্যুট সক্ষম করে)

ব্যাখ্যা

একটি বৈধ বিন্যাস এটি একটি সহজ উপায় থেকে নম্বর সন্নিবেশ করার মাধ্যেমে শুরু করার 0জন্য N, যাতে, এবং তারপর প্রতিটি সাবস্ট্রিং পার্শ্ববর্তী সংখ্যার বিপরীত >গুলি। <><<>>><<উদাহরণ হিসাবে ধরুন :

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

এই দুটি কাজই রেটিনার ক্ষেত্রে মোটামুটি সহজ, যদিও আমরা সত্যই কাজ করতে পারি তার সবগুলি স্ট্রিং। আমরা সংখ্যাগুলি Nনীচে থেকে সন্নিবেশ করিয়ে 0এবং <পরিবর্তে পার্শ্ববর্তী বিভাগগুলিকে বিপরীত করে একটি অতিরিক্ত বাইট সংরক্ষণ করতে পারি , তবে নীতিটি একই।

মঞ্চ 1: প্রতিস্থাপন


$.'

আমরা $'ইনপুটটির প্রতিটি সম্ভাব্য অবস্থানে দৈর্ঘ্য (প্রত্যয়টি, অর্থাৎ ম্যাচের পরে সবকিছু ) byোকানো শুরু করি । এটি Nনীচে থেকে নীচে নম্বর সন্নিবেশ করায় 0

দ্বিতীয় পর্যায়: বিভক্ত

S`>

আমরা ইনপুটটিকে >আলাদা আলাদা লাইনে বিভক্ত করি , সুতরাং প্রতিটি লাইন হয় স্বতন্ত্র সংখ্যা বা সংখ্যার তালিকাতে যুক্ত হয় <

পর্যায় 3: বাছাই করুন

%O#`\d+

প্রতিটি লাইনের মধ্যে ( %) আমরা Oসংখ্যাগুলি ( \d#) তাদের সংখ্যাসূচক মান ( #) অনুসারে বাছাই করি। যেহেতু আমরা নম্বরটি বিপরীত সংখ্যায় সন্নিবেশ করিয়েছি, এটি তাদের বিপরীত করে।

পর্যায় 4: প্রতিস্থাপন

¶
>

আমরা >সমস্ত কিছু আবার এক লাইনে যোগ দিতে লাইনফিডগুলি আবার পরিণত করি । এটাই.

পার্শ্ব নোট হিসাবে, আমি %লাইনফিডগুলির চেয়ে অন্য সীমানাঙ্কগুলিতে প্রয়োগ করার উপায় যুক্ত করার অর্থ করছি । আমি যদি ইতিমধ্যে এটি করতাম তবে এই জমাটি 14 বাইট হত , কারণ তখন শেষ তিনটি স্তর একক হয়ে গিয়েছিল:

%'>O#`\d+

এটি আমার মাপের মত আটকের মতো কীভাবে? চমৎকার কাজ.
থ্রিএফএক্স

@ থ্রিএফএক্স- এর কারণ আমি নিষ্ঠুর শক্তি ব্যবহার করি না। ;) এক মিনিটের মধ্যে ব্যাখ্যা আসছে।
মার্টিন ইন্ডার

22

> <> , 46 39 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$-

এটি অনলাইন চেষ্টা করুন! -s=পতাকাটির জন্য +4 বাইট - যদি ঠিক থাকে -sতবে (এর অর্থ খালি ইনপুট দেওয়ার জন্য পতাকাটি পুরোপুরি বাদ দেওয়া দরকার হবে), তার পরিবর্তে এটি +3 হবে।

ধরে নেওয়া যায় যে এসটিডিন ইনপুট খালি তাই এটি i-1 উত্পাদন করে (যা এটি ইওএফ- তে করে)। প্রোগ্রামটি এই -1টিকে চর হিসাবে প্রিন্ট করার চেষ্টা করে ত্রুটি করে।

সর্বাধিক-সংখ্যার-তাই-দূর-জন্য- >, ন্যূনতম-নম্বরের-তাই-দূর-পক্ষে- <পদ্ধতির ব্যবহার করে।

[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)

এমন একটি প্রোগ্রাম যা পরিষ্কারভাবে প্রস্থান করে এবং এসটিডিআইএন সম্পর্কে ধারণাটি করে না 4 টি অতিরিক্ত বাইট:

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


11

পার্ল, 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 দিয়ে শুরু হওয়া Then 1 দ্বারা (স্ট্রিংয়ের শেষে এটি কোনও ব্যাপার নয় যে আপনি উভয়টি একই হওয়ায় আপনি কোন কাউন্টারটি গ্রহণ করেন)


s{}{/\G/...}আমি এর আগে কখনও দেখিনি, উজ্জ্বল।
প্রিমো

10

পাইথন 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

@ মঠমন্দন ধন্যবাদ! এটি অদ্ভুত <এবং >ক্রমাগত কোডপয়েন্টগুলি নয়।
xnor

একমত! তবে আমি অনুমান করি যে আমি এটি দেখতে পাচ্ছি যে এটির =মধ্যে <এবং এর মধ্যে কীভাবে অর্থবোধ হবে >
mathmandan

8

পাইথন 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

এপিএল, 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
ক্রিসমাস ট্রি ( ⍋⍋) কি করে?
কনর ও ব্রায়েন

গ্রেড আপ, যা সাজানো ক্রমে সূচকগুলি দেয়। দু'বার করে, আপনি পাবেন 1যেখানে সবচেয়ে ছোট সংখ্যাটি ছিল, 2যেখানে পরবর্তী ক্ষুদ্রতম সংখ্যাটি ছিল, ect।
Zwei

@ কনরও ব্রায়ান একটি সংক্ষিপ্ত ব্যাখ্যা দিয়ে সম্পাদনা করেছেন।
ওবেরন

হ্যাঁ, খুব সংক্ষিপ্ত ._
কনর ওব্রায়েন

7

জাভাস্ক্রিপ্ট (ES6), 74 56 বাইট

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

সংখ্যার সেট দিয়ে শুরু হয় 0...N। প্রতিটি পর্যায়ে কেবলমাত্র অবশিষ্ট সংখ্যার সর্বাধিক ( l) বা কমপক্ষে ( j) লাগে ; সংজ্ঞা অনুসারে পরবর্তী সংখ্যাটি অবশ্যই এর চেয়ে কম বা বেশি হবে। সম্পাদনা: @ আর্নল্ডকে একটি বিশাল 18 বাইট সংরক্ষণ করা হয়েছে।


3
আপনি ব্যবহার করতে পারেন replace? হতে পারেs=>s.replace(/./g,c=>(c<'>'?j++:l--)+c,j=0,l=s.length)+j
Arnauld

@ আরনাউল্ড ... এবং আমি ভেবেছিলাম যে আমি আমার প্রথম প্রচেষ্টা (যা দ্বারা প্রতিস্থাপনের পক্ষে উপযুক্ত ছিল না replace) 74৪ বাইটে নামিয়ে গলফ করার পক্ষে ভাল করছি ...
নীল

5

পাইথ - 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

এটি অনলাইন চেষ্টা করুন!

এন <10 এর জন্য এটি 14 বাইট হতে পারে:

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

4

সি #, 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 +অংশটি কোনও যৌগিক অ্যাসাইনমেন্টে পরিবর্তন না করে একটি দম্পতি বাইট সংরক্ষণ করব?
কারসিজিনিট

2
না - r+ডানদিকে থাকা অংশটি কম্পাইলারকে বলে যে পুরো জিনিসটি একটি স্ট্রিং, সুতরাং এর স্ট্রিং প্রতিনিধিত্ব cব্যবহৃত হয়। যদি আমি ব্যবহার করি r+=, ?:অংশটি intএকটিতে মূল্যায়ন করবে , এর মূল মানটি এতে cযুক্ত হবে এবং কেবল তখনই এটি তার স্ট্রিং প্রতিনিধিত্বতে রূপান্তরিত হবে।
শেফিও

4

জাভা 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;};

আমি মনে করি না এটি এমনকি কাজ করে

অসম্পূর্ণ পরীক্ষা প্রোগ্রাম

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(">><><>>"));
}

আপনি 5 টি বাইট সংরক্ষণ করতে চারপাশে পরিবর্তন করতে .replaceAllপারেন .replaceএবং প্রথম বন্ধনীটি সরাতে পারেন (c+"")
কেভিন ক্রুইজসেন

@ কেভিনিক্রুজসেন প্রায় 5 বাইট হাঃহাজা করা হয়নি।
শন ওয়াইল্ড

একটি সঠিক গল্ফিং ভাষা ব্যবহার করার সময়, 5 বাইট 5 তম এবং 2 য় স্থানের মধ্যে পার্থক্য। জাভা দিয়ে এটি শেষ এবং দূরবর্তী স্থানে সর্বশেষ স্থানের মধ্যে পার্থক্য।
শান ওয়াইল্ড

কোড-গল্ফিং চ্যালেঞ্জগুলির সাথে জাভা প্রায় সর্বশেষে থাকবে তবে যতটা সম্ভব সংক্ষিপ্ত লেখার মজাদার জন্য আমরা জাভা উত্তরগুলি পোস্ট করার কারণটি শুরু করি। আমার জাভা কোডটি বাইটের ক্ষেত্রে 500 থেকে 499 এ চলে গেলে আমি ব্যক্তিগতভাবে ইতিমধ্যে খুশি। ; পি
কেভিন ক্রুইজসেন

আমরা মূলত সমস্ত প্রতিযোগীদের উপেক্ষা করি এবং কেবল জাভা / সি # সাবমিশন ইত্যাদির সাথে প্রতিযোগিতা করি
শন ওয়াইল্ড

4

জেলি , 27 14 12 বাইট

@ মার্টিন এন্ডারস সিজোম সলিউশন
-২ বাইটস @ ডেনিসকে ধন্যবাদ জানায়

żJ0;µFṣ”<Uj”<

এটি পরীক্ষা করুন ট্রাইটঅনলাইনে পরীক্ষা করুন

কিভাবে?

ż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;অন্য একটি বাইট সংরক্ষণ করে।
ডেনিস

4

ক্লোজার, 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))))

আমি যতটা সম্ভব হোয়াইট স্পেস বাদ দিয়ে ন্যায্য সংখ্যক বাইট সংরক্ষণ করেছি। আমি বুঝতে পেরেছিলাম যে অন্য চরিত্র থেকে একটি প্রথম বন্ধনী পৃথক করার জন্য শ্বেত স্পেসের প্রয়োজন নেই।

মূলত @ Scepheo এর উত্তরের ক্লোজার বন্দর। অভিন্নভাবে কাজ করে।

সেই recurকলগুলি হত্যাকারী! আমি মনে করি এটি পরিষ্কার করার জন্য আমি পরমাণুগুলি ব্যবহার করতে পারতাম। swap!ব্যবহারের পরমাণু করা প্রয়োজন কল গণনা যোগ করা: /

আমাকে কয়েকটা বাইট সংরক্ষণ করার জন্য @ মলয়য়কে ধন্যবাদ জানাই।

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

সাইটে স্বাগতম!
ডিজেএমসিএমহেম

@ ডিজেএমসিএমহেম ধন্যবাদ আশা করি পরের বার আমি অন্য উত্তর পোর্ট করার পরিবর্তে আমার নিজের সমাধান নিয়ে আসতে সক্ষম হব।
কার্সিজিনিট

loopবাইন্ডিংয়ের আগে sএবং পরে আপনি আরও দুটি স্পেস সংরক্ষণ করতে পারেন a। এছাড়াও আপনি প্রতিস্থাপন একটু শেভ পারে ifএকটি সঙ্গে গাছ case: (case c \< (recur ...) nil (str ...) (recur ...))। এবং অবশ্যই crএকটি ছোট নাম হতে পারে।
amalloy

@ মলয় ভাল পয়েন্টস, আপনাকে ধন্যবাদ। আমি আমার ল্যাপটপে উঠলে আপডেট করব।
কার্সিজিনিট

3

হাস্কেল, 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

এটি লম্বা লম্বা।


3

পার্ল (-p এর জন্য 107 + 1) 108

for$c(split''){$s.=$i++.$c;}
for$b(split'<',$s.$i){$h[$j]=join'>',reverse split'>',$b;$j++;}
$_=join'<',@h;

মার্টিন এেন্ডারের উত্তর থেকে চুরি করা অ্যালগরিদম


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

দ্রষ্টব্য: সময়ের জটিলতা বড় (ও (এন!))।


2

পাইথন 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

এটি অনলাইনে চেষ্টা করুন


ইন্টারলেস অংশটি খুব কম হয়ে যেতে পারেzip
মাল্টেসেন

@ মালটিসেন এক টন কম নয়, কারণ তালিকাগুলি একই দৈর্ঘ্যের নয় (আমার এখনও অবধি আছে pop) তবে এটি কিছুটা খাটো। যদি N<10, আমি স্ট্রিংফাইটিং আরও ছোট করতে পারি।
mbomb007

1

পিএইচপি, 190 বাইট

কোনও বৈধ সমাধান উপস্থিত না হওয়া পর্যন্ত এলোমেলো শ্যাফেল করুন le

$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 বাইট সমস্ত সমাধান পান এবং একটি বেছে নিন

<?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.