কমপক্ষে আউটপুট নম্বরগুলি


15

চ্যালেঞ্জ

প্রদত্ত একটি ইনপুট স্ট্রিং (বা অ্যারে) সমন্বিত এবং <এবং >আউটপুট একটি পূর্ণসংখ্যার ক্রমিক (অ্যারে বা স্ট্রিং) যেমন:

  • আউটপুটটিতে পরপর সংখ্যার মধ্যে ক্রম প্রয়োগ করা হলে অপারেটররা সমস্ত সঠিক হয়
  • সমস্ত পূর্ণসংখ্যা ধনাত্মক (1 বা তার বেশি)
  • পূর্ণসংখ্যার যোগফল গাণিতিকভাবে যতটা সম্ভব সম্ভব

ইনপুটগুলি আপনার নির্বাচিত ভাষায় "এর চেয়ে বড়" এবং "এর চেয়ে কম" মিলতে পারে।

বিকল্প আউটপুট হিসাবে, কেবল আউটপুটে সংখ্যার যোগফল নির্দিষ্ট করুন। আপনার উত্তর শিরোনামে আপনি কোন সংস্করণটি সমাধান করছেন তা উল্লেখ করুন।

সাধারণ বর্জন এবং নিয়মগুলি প্রয়োগ হয়, সবচেয়ে ছোট বাইট জেতে।

আপনি ধরে নিতে পারেন যে ইনপুট স্ট্রিং কখনই আপনার ভাষায় পূর্ণসংখ্যার উপচে পড়বে না, যদি এটি সহায়তা করে।

উদাহরণ

  • >2 1যা যোগান দেয়3
  • >>>4 3 2 1যা যোগান দেয়10
  • ><2 1 2যা যোগান দেয়5
  • 1যা যোগান দেয়1
  • >>>>>>>>>10 9 8 7 6 5 4 3 2 1যা যোগান দেয়55
  • >><<>><>>>3 2 1 2 3 2 1 4 3 2 1যা যোগান দেয়24
  • ><>><>><>2 1 3 2 1 3 2 1 2 1যা যোগান দেয়18
  • <<<<>1 2 3 4 5 1যা যোগান দেয়16
  • <<<<><<>1 2 3 4 5 1 2 3 1যা যোগান দেয়22
  • >><<3 2 1 2 3যা যোগান দেয়11

আমরা ছাড়া অন্য প্রতীক ব্যবহার করতে পারি >এবং <?
এরিক দ্য আউটগল্ফার

@ জোনাথান অ্যালান আমার মনে হয় যে এটি উদাহরণগুলি ভুল এবং আপনার অনুমান করা উচিত উত্তর দেওয়ার সময়, অনুমানটি ভুল নয়। সম্পাদনা: ঠিক আছে, তবে আমি আশঙ্কা করি তারা অবৈধ, কারণ এটি এমন অনুমান যা পরীক্ষার ক্ষেত্রে নয়, একটি চ্যালেঞ্জকে সংজ্ঞায়িত করে।
এরিক দ্য আউটগল্ফার

4
<> <এ উত্তরের জন্য কেবল অপেক্ষা করুন।
খুলনাশেঠ না'বাড়িয়া

1
উদাহরণ গুলো গণ্ডগোলের জন্য সবার কাছে ক্ষমা চেয়ে নিলাম! অন্যান্য চরিত্রগুলির জন্য, হ্যাঁ, আপনার ভাষাতে তাদের একই অর্থ রয়েছে
সিমোনালেক্সান্ডার 2005

3
@ এসক্রুবল আপনি এটি ভুল বানান করেছেন। এটি><>
জো কিং

উত্তর:


3

জেলি , 19 বাইট

0;+×¥@\
=”<µCṚÇṚ»Ç‘

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

প্রতিটি সংখ্যা মান MAX ( সংখ্যা >এটা ডানদিকে অবিলম্বে , সংখ্যা <এটা বাঁদিকে অবিলম্বে ) + 1 টি


বিকল্পভাবে ...

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


স্ট্যাকসের মতো ট্রান্সপিল করার জন্য একটি প্রোগ্রামের প্রয়োজন এমন ভাষাগুলি আমি পছন্দ করি না ... ভাল, জেলি সীমান্তরেখা। (স্ট্রিং সংকোচনের জন্য একটি প্রোগ্রামের প্রয়োজন) কমপক্ষে, জেলি এখনও জেতে।
ব্যবহারকারী 202729


নান্দনিকভাবে, আমি এটি সত্যিই পছন্দ করি না। তবে গল্ফিংয়ের ভাষায় আমি যে জিনিসটি সবচেয়ে বেশি পছন্দ করি তা হ'ল এটির প্রোগ্রামগুলি সবচেয়ে ছোট হতে দেয়। এই সম্পর্কে স্ট্যাক্সের জন্য আমার কাছে এখনও কিছু ধারণা রয়েছে ...
পুনরাবৃত্তি করুন

8

> <> , 40 38 বাইট

1v!rnr~<oa
?\i:0(?^3%\+$
{/?:-{:}-1/1:

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

একটি উপযুক্ত ভাষা। রেফারেন্সের জন্য ><>নিজেই 2,1,2,1 ফলন করে।

কিভাবে এটা কাজ করে:

1v   Initialise the stack as 1 and enter loop
 \i:0(?^  If we're out of input, go to the first line
        3%\ Otherwise mod the input by 3, yielding 0 for < and 2 for >
        -1/Subtract 1 to get -1 and 1 respectively
    -{:}   Copy the previous number and subtract the above from it

 /?:    If the number is not 0, repeat the loop

?\        \+$  Otherwise:
                Increment each number until we reach the original 0
{/        /1:   And enter the first loop again

      ~<    When we're out of input, pop the extra -1 from EOF
   rnr      Output the first number
1v!         Push a 1 
        oa  Print a newline and repeat, popping the extra 1 each time

ভাষা নিজেই কী মান ধারণ করে তা উল্লেখ করার জন্য +1। :) (এবং কারণ এটিও ঠিক একটি ভাল উত্তর, অন্যথায় আমার এটি + 1-এড না হত))
কেভিন ক্রুইজসেন

5

পাইথন 3, 93 বাইট

k=0
for r in input().split('<'):p=len(r);print(max(k,p)+1,*range(p,0,-1),end=' ');k=1+(p<1)*k

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

Unscrambled:

# offset, will be explained later
k = 0 
for run in input().split('<'):
    # p = length of sequence of '>'s, which will produce p+1 decreasing integers
    p = len(run)
    # will print:
    # p+1 p p-1 ... 1    or    k+1 p p-1 ... 1
    print(max(k, p) + 1, *range(p, 0, -1), end=' ')
    # offset of the next sequence: (i.e. -1 + the minimal value of the first integer)
    k = 1 + (k if p > 0 else 0)

1
এটি আমার প্রথম গল্ফ!
Fons

5

হাস্কেল , 119 বাইট

n%">"=r[1..n]
n%"<"=[1..n]
n%(c:b)|c==b!!0=(n+1)%b|a:s<-2%b,e:z<-r$n%[c]=r z++last(max:[min|c>'<'])a e:s
r=reverse
(2%)

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

ব্যাখ্যা

এখানে ধারণাটি হল যে আমাদের যে কোনও একটি >বা <s এর রান রয়েছে , যা প্রতিটি মানচিত্রকে আরোহণ এবং অবতরণ রেঞ্জের করে। সুতরাং আমরা groupস্ট্রিংকে টানা অক্ষরের গ্রুপগুলিতে বিভক্ত করতে ব্যবহার করি । আমাদের কাজ তখন সঠিক ফ্যাশনে এগুলি একসাথে সেলাই করা।

যখন আমাদের রয়েছে <>আমরা উদাহরণস্বরূপ বৃহত প্রান্তের মানটি দুটি একসাথে সেলাই করতে চাই

<<<<<<>>

বিভক্ত হয়

<<<<<<  >>

রেঞ্জগুলিতে ম্যাপ করা

[1,2,3,4,5,6,7] [3,2,1]

তারপরে যখন আমরা সেলাই করি তখন 3ছোট হয় কারণ3 চেয়ে বড় নয় 7)।

 [1,2,3,4,5,6,7,2,1]

আমাদের যখন আমরা ><বিপরীতটি করি তখন আমরা বৃহত্তর মানটি ড্রপ করি।

প্রকৃত কোড অপারেটর তৈরি করে এটি অর্জন করে %। সংজ্ঞাটি %বেশ জটিল, তবে মূলত এটি ক্রমাগত কতগুলি অক্ষর একই তা ট্র্যাক করে বাম থেকে ডানদিকে পড়ে reads এটি অপারেটরের মান বামে এটি করে। যখন আমরা এমন কোনও জায়গায় পৌঁছে যাই যেখানে অক্ষরগুলি পরিবর্তন হয় আমি উল্লিখিত হিসাবে সেলাইটি সম্পাদন করি।


শেষ লাইনের উদ্দেশ্য কী (2%)?
সেরাকুশা

@ সিরাকুসা এটি ফাংশন নিজেই। এটা একটা pointfree ফাংশন, তাই এটি মূলত কল বলছেন %সঙ্গে 2প্রথম আর্গুমেন্ট হিসাবে।
পোস্ট রক গার্ফ হান্টার ২৩:০৫

সম্পূর্ণ mainবাস্তবায়ন যোগ করার পরিবর্তে শেষ পংক্তিতে চূড়ান্ত ফাংশন কলটি স্থাপন করা কি এখানে একটি সাধারণ অনুশীলন ?
সেরাকুশা

1
@ সিরাকুসা হ্যাঁ জমা দেওয়া নামকরণ ফাংশন, বেনামি ফাংশন বা সম্পূর্ণ প্রোগ্রাম হিসাবে অনুমোদিত। এটি একটি বেনামে ফাংশন। আমি বেনামি বেছে নিই কারণ এটি সবচেয়ে সংক্ষিপ্ত।
পোস্ট রক গার্ফ হান্টার

@ সিরাকুসা হাস্কেলের গল্ফিং বিধি সম্পর্কিত আমাদের গাইড দেখুন ।
লাইকোনি

4

রেটিনা 0.8.2 , 36 বাইট


1
{`\b(1+)>\1
1$&
}`(1+)<\1\b
$&1
1

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:


1

সন্নিবেশ 1গুলি আগে, মধ্যে এবং পরে <s এবং >গুলি।

{`\b(1+)>\1
1$&
}`(1+)<\1\b
$&1

সমস্ত তুলনা সন্তুষ্ট না হওয়া পর্যন্ত বারবার বর্ধিত পূর্ণসংখ্যাগুলি।

1

পূর্ণসংখ্যা যোগফল এবং দশমিক রূপান্তর।


3

জাভা 10, 198 181 বাইট

s->{var p=s.split("(?<=(.))(?!\\1)");int l=p.length,L[]=new int[l],i=l,r=0,a,b;for(;i-->0;r+=a*-~a/2-(i<l-1?p[i].charAt(0)<61?a<(b=L[i+1])?a:b:1:0))a=L[i]=p[i].length()+1;return r;}

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

ব্যাখ্যা:

s->{                      // Method with String parameter and integer return-type
  var p=s.split("(?<=(.))(?!\\1)");
                          //  Split the String into parts
                          //  (i.e. ">><<>><>>>" becomes [>>, <<, >>, <, >>>])
  int l=p.length,         //  Get the amount of parts
      L[]=new int[l],     //  Create an integer-array of the same size
      i=l,                //  Index-integer, starting at this size
      r=0,                //  Result-integer, starting at 0
      a,b;                //  Two temp integers to reduce the byte-count
  for(;i-->0;             //  Loop downwards over the array; range: (`l`,0]
      ;r+=                //    After every iteration: increase the result with:
          a*-~a/2         //     The triangle number of the current item
        -(i<l-1?          //     If it's not the last item:
           p[i].charAt(0)<61?
                          //      And the order of the current and previous is "<>":
            a<(b=L[i+1])? //       If the current item in `L` is smaller than the previous:
             a            //        Subtract the current item
            :             //       Else (the current is equal or larger than the previous):
             b            //        Subtract the previous item
           :              //      Else (the order of the two parts is "><" instead):
            1             //       Subtract 1
          :               //     Else (it's the last item in `L`):
           0))            //      Leave the result `r` unchanged
    a=L[i]=               //   Set both `a` and the current item in `L` to:
     p[i].length()+1;     //    The length of the part + 1
  return r;}              //  Return the result

3

হাস্কেল , 87 বাইট

r=reverse
s#c=(+1).length.takeWhile(==c)<$>scanr(:)[]s
f s=zipWith max(s#'>')$r$r s#'<'

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

আমার জেলি উত্তর একটি বন্দর।



@ ইউজার 666566 ধন্যবাদ!
ব্যবহারকারী 202729

2

স্ট্যাক্স , 21 বাইট

éda╓~/└↨☺∟╒←║ç Γφ5←9h

এটি চালান এবং এটি ডিবাগ করুন

এটি ইনপুটটি রান-লেংথ এনকোডিং করে কাজ করে এবং তারপরে উত্পন্ন ব্যাপ্তিগুলি একসাথে তৈরি করে। আনপ্যাকড, নিরবচ্ছিন্ন এবং মন্তব্য করা হয়েছে, এটি দেখতে এটির মতো দেখাচ্ছে।

|R      run-length encode
{       begin block
  H^R   range from [1 .. run length]
  _hh|1 -1 ** (character code / 2)
  *     multiply run; this will reverse it iff character is '>'
m       map runs using preceding block
O       push a 1 under the top of stack
{       begin block
  h|M   get the start of the generated range, and take max of it and top of stack
  _DE   push the rest (tail) of the generated range to the stack
F       foreach generated range
L|+     sum of all values on the stack

এটি চালান


2

পার্ল 5 -p , 53 বাইট

#!/usr/bin/perl -p
s//1/g;1while s/(?=\b(1+)>\1)|(1+)<\2\b\K/1/;$_=y/1//

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


1
এই উত্তরটি চ্যালেঞ্জের নির্দিষ্টকরণের পরিবর্তে পরীক্ষার কেসগুলির ভিত্তিতে প্রয়োগ করা হয়েছে বলে মনে হয়। দুর্ভাগ্যক্রমে, তারা ভুল হিসাবে চিহ্নিত হয়েছে
এরিক দি আউটগল্ফার

1
@ এরিকথ আউটগলফার স্থির করেছেন
টন হসপেল

1

লাল , 185 বাইট

func[s][repeat n 1 + length? s[l: 0 i: n - 1 while[i > 0 and(s/(i) = #"<")][i:  i - 1 l: l + 1]r: 0 i: n while[(i <= length? s)and(s/(i) = #">")][i: i + 1 r:
r + 1]prin[1 + max l r""]]]

ব্যবহারকারী 202729 এর ব্যাখ্যার পরে ...

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

f: func[s][
   repeat n 1 + length? s[
       l: 0
       i: n - 1
       while [i > 0 and (s/(i) = #"<")][ 
           i: i - 1
           l: l + 1
        ]
        r: 0
        i: n
        while [(i <= length? s) and (s/(i) = #">")][
            i: i + 1
            r: r + 1
        ]
        prin[1 + max l r ""]
    ]
]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.