আমি কি টিপস দেবো?


36

সংক্ষিপ্ত বিবরণ

একটি 3 লাইনের স্ট্রিং দেওয়া হয়েছে, কাঠামোটি বাম দিকে পড়ে, ব্যালেন্স করে বা ডানে পড়ে কিনা তা বের করুন।

ইনপুট কাঠামো

শীর্ষে স্টাফযুক্ত ধাতব রড হিসাবে কাঠামোটি আপনি কল্পনা করতে পারেন, সমস্ত উল্লম্ব রডের উপরে ভারসাম্যপূর্ণ।

1  7 4        a
===============
        |

প্রথম লাইন আইটেম হয়। প্রতিটি আইটেমের ওজনটি 32 বিয়োগের অক্ষরের ascii মান হিসাবে গণনা করা হয় 32 মনে রাখবেন যে কোনও আইটেমের কাঠিটি তার পিভট পয়েন্টের দূরত্বের ওজনের গুন।

দ্বিতীয় লাইনটি রড। রড প্রতিটি দৈর্ঘ্যের নিজেই 1 ইউনিট ওজন। এই লাইনটি একচেটিয়াভাবে চিহ্নের সমান (= )।

তৃতীয় রেখাটি হ'ল পিভট পয়েন্ট। এটি যে কোনও জায়গায় স্থাপন করা যেতে পারে এবং একক পাইপ দ্বারা অনুসরণ করা অনেকগুলি স্থান দ্বারা প্রতিনিধিত্ব করা হয় (| ) অক্ষর ।

উদাহরণ

ইনপুট:

=====
  |

আউটপুট: ভারসাম্য

ইনপুট:

=====
   |

আউটপুট: ফলস বাম

ইনপুট:

    %
=====
   |

আউটপুট: ভারসাম্য (কারণ %রডের বাম পাশের ওজন প্রতিরোধের জন্য যথেষ্ট ওজন)

ইনপুট:

 এএ
=======
   |

আউটপুট: ফলস ডান (কারণ aডানদিকে পিভট পয়েন্ট থেকে আরও দূরে)

ইনপুট:

1  7 4        A
===============
        |

আউটপুট: ফলস বাম

ইনপুট:

1  7 4        a
===============
        |

আউটপুট: ফলস ডান (ছোট হাতের অক্ষরগুলি ভারী!)

ইনপুট:

            $ ~
===============
             |

আউটপুট: ভারসাম্য

নোট

  • পেছনের সাদা স্থান অনুমোদিত, নেতৃস্থানীয় সাদা স্থান নেই ace
  • বাম, ভারসাম্য এবং ডানদিকে 3 স্বতন্ত্র আউটপুট রয়েছে ততক্ষণ আপনার প্রোগ্রামটি আপনার পছন্দ মতো ফর্ম্যাটে আউটপুট দিতে পারে।
  • আপনার প্রোগ্রামটি অবশ্যই ইনপুট হিসাবে প্রদর্শিত ফর্ম্যাটটি গ্রহণ করবে।


প্রোগ্রামটি তিনটি লাইনকে তিনটি পৃথক স্ট্রিং হিসাবে নিতে পারে (যেমন কোনও ফাংশনে তিনটি আর্গুমেন্ট হিসাবে বা একটি তিনটি উপাদান তালিকা হিসাবে)?
notjagan

@ নোটজাগান ইনপুটটি অবশ্যই একটি নতুন পংক্তির অক্ষর দ্বারা পৃথক স্ট্রিং হওয়া উচিত।
ড্যাফি

সম্পর্কিত , সম্ভাব্য দ্বৈত
xnor

@xnor একটি ডুপ নয়, কারণ এই প্রশ্নটি কেবলমাত্র বড় হাতের অক্ষর নিয়ে কাজ করে এবং এর লক্ষ্যটি পাইভট সন্ধান করা। আমার প্রশ্ন সমস্ত আসকি অক্ষরগুলি সম্পর্কে> = 32, এবং খনিটি পাইভট সরবরাহ করে এবং জিজ্ঞাসা করে যে কাঠামোটি পড়ে যাবে কিনা। মূলত আপনি লিঙ্ক করেছেন তার বিপরীতে।
ড্যাফি

উত্তর:


8

জাভাস্ক্রিপ্ট (ES6), 116 111 108 106 বাইট

-5 মাধ্যমে summing দ্বারা বাইট eval(array.join`+`)পরিবর্তে array.reduce()পরিবর্তে
-3 বাইট ডিফল্ট করে , প্রথম বন্ধনী সরানোর অনুমতি দেয়। 132 - 31
পিভট পয়েন্ট থেকে -2 বাইট হ'ল শেষ লাইনের দৈর্ঘ্য - 1

(s,[t,r,b]=s.split`
`)=>Math.sign(eval([...r].map((_,i)=>(t.charCodeAt(i)-31||1)*(i-b.length+1)).join`+`))

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

প্রথম লাইনটি ব্যবহার করে রডের দৈর্ঘ্যের সাথে মেলে যদি প্যাড করা হয় তবে 4 বাইট সংরক্ষণ করতে পারে
(31-t.charCodeAt(i))*(b.length+~i)

পরীক্ষার স্নিপেট

সংখ্যার সাথে অতিরিক্ত আউটপুট ( Left/ Balanced/ Right) অন্তর্ভুক্ত করে।

f=
(s,[t,r,b]=s.split`
`)=>Math.sign(eval([...r].map((_,i)=>(t.charCodeAt(i)-31||1)*(i-b.length+1)).join`+`))
<textarea id=I rows=3 cols=20></textarea><br><button onclick="O.value=I.value?`${x=f(I.value)} (${['Left','Balanced','Right'][x+1]})`:''">Run</button> <input id=O disabled>

অন্য 106 বাইট পদ্ধতি

(s,[t,r,b]=s.split`
`)=>Math.sign(eval(r.replace(/./g,(_,i)=>"+"+(t.charCodeAt(i)-31||1)*(i-b.length+1))))

joinএসগুলিতে একটি অ্যারে যুক্ত করার পরিবর্তে +, আমরা সংখ্যার একটি স্ট্রিং তৈরি করি, যার প্রতিটি দ্বারা উপসর্গ করা হয় +। অগ্রণী +অবহেলিত হয়।


1
আমি মনে করি (b.length+~i)একটি বাইট সংরক্ষণ করতে সাহায্য করতে পারে। (এছাড়াও আপনার কাছে কেন রয়েছে তা আমি বুঝতে পারি না ||1))
নীল

1
@ নীল b.length+~iএর নেতিবাচক ফেরত দেয় i-b.length+1; আমি সাহায্য করতে পারি যদি আমি অন্য অংশ অবহেলা করতে পারে। হিসাবে ||1, এটি ছিল কারণ আমি ধরেছিলাম যে প্রথম লাইনটি রডের দৈর্ঘ্যের সাথে মিলের জন্য প্যাড করা হয়নি, তাই প্রথম লাইনের শেষের বাইরে t.charCodeAt(i)ফিরে আসবে NaN
জাস্টিন মেরিনার

আমার কোনও প্যাডযুক্ত পরীক্ষার মামলা করার চেষ্টা করা হয়নি; ব্যাখ্যা করার জন্য ধন্যবাদ।
নীল

3

পাইথন 2 , 112 110 বাইট

def f(s):w,b,p=s.split('\n');return cmp(sum((ord((w+' '*-~i)[i])-31)*(i-p.find('|'))for i in range(len(b))),0)

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

সম্পাদনা: পরিশেষে 2 টি বাইটের জন্য enumerateএবং rjustএকটি পরিমাপ 2 মে ...

একটি স্ট্রিং মধ্যে লাগে; আউটপুট -1,0, বা 1 ফলস বাম জন্য, ভারসাম্যহীন, যথাক্রমে ডান পতন হয়।

112 বাইটে প্রথম পাসটি ছিল:

def f(s):w,b,p=s.split('\n');return cmp(sum((ord(c)-31)*(i-p.find('|'))for i,c in enumerate(w.rjust(len(b))),0)

(ord(c)-31)আমাকে বুঝতে সময় লাগল যে এটি আসলে আইটেমের সাথে রডের ওজনকেই অন্তর্ভুক্ত করছে। খুব চালাক!
ড্যাফি

1
মেটা অনুসারে , আপনি -1 বাইট returnদিয়ে প্রতিস্থাপন করতে পারেন print(যদিও এটি বর্তমান টিআইও কোডের সাথে সত্যিই দুর্দান্তভাবে খেলছে না)।
notjagan

3

হাস্কেল, 212 171 বাইট (188 যদি ইনপুটটিকে একটি স্ট্রিং হিসাবে গ্রহণ করে)

o!p=map(fst)(zip[p-0,p-1..]o)
x#p=sum(zipWith(\c w->(max(fromEnum c-32)0)*w)x(x!p))+sum(x!p)
x?c=length(takeWhile(==c)x)

171 বাইট বৈকল্পিক

r a b c=signum(take(b?'=')(a++repeat ' ')#(c?' '))

188 বাইট বৈকল্পিক

x%y=lines x!!y
r i=signum(take(i%1?'=')(i%0++repeat ' ')#(i%2?' '))

ব্যাখ্যা

o!p=map(fst)(zip[p-0,p-1..]o)        Creates weights coefs list. 
                                     o - list, p - pivot position
                                     for list "abcdf" and p=3 (pivot under 'd')
                                     outputs [3,2,1,0,-1]

x#p                                  Calculates total balance
                                     x-list of "objects" on lever, p-pivot place
  sum(zipWith                        sum of zipped lists
   (\c w->(max(fromEnum c-32)0)*w)   weight of ascii "object" times
                                     distance from pivot
    x(x!p))                          x-ascii objects, 
                                     (x!p)-distances list(weight coefs)
  +sum(x!p)                          balance of lever ("==") itself

x?c=length(takeWhile(==c)x)          length of list before non c element met
                                     used to find '|' position
                                     and length of "===" lever
                                     before right whitespaces met

r a b c=                             Sums it all up =)
                                     a-ascii objects, b-lever, c-pivot line
   signum(                           1-tips left, 0-balance, -1-tips right
     take(b?'=')(a++repeat ' ')      takes all object on lever 
                                     plus whitespaces up to length of the lever
      #                              calculate the balance
       (c?' ')                       determine place of pivot

1
আপনি fromEnumপরিবর্তে ব্যবহার করতে পারেন ordএবং ড্রপ importcসরল করে দেওয়া যেতে পারে c p=max(ord p-32)0(বা সাথে fromEnum) এবং আপনি এটি একবারে ব্যবহার করছেন, এটি ইনলাইন করুন।
নিমি

অথবা আপনি আপনার শিরোনামে (ল্যাম্বডাবোট) যুক্ত করতে পারেন, এটি আপনার প্রয়োজনীয় সমস্ত কিছু আমদানি করে, দেখুন এখানে
10

1
cএমনকি ফাংশনটি আরও সরল করা যেতে পারে (32 বছরের কম বয়সী বর্ণগুলি বিবেচনা করা হয় না) c p=ord p-32। এছাড়াও pমূলত length(বিয়োগ 1), তাই p x=length x-1খুব কার্যকর হবে (এবং আপনি এটিও ইনলাইন করতে পারেন)। এছাড়াও আমার সমাধানটি দেখুন, আমি কীভাবে ব্যবহার করব signum- আপনি কী করতে পারেন r o l s = signum $ 2 * z ...যা 0,1,-1বি, এল, আর এর জন্য ফিরে আসে ।
ბიმო

1
এগুলি ছাড়াও যে এই সমাধানটি পরীক্ষার কেসগুলিকে ব্যর্থ বলে মনে হচ্ছে [3,4,7]এবং এর পরিবর্তে 3 টি স্ট্রিং নেয়। (দেখুন lines)
ბიმო

1
এখানে কয়েকটি টিপস প্রয়োগ করে একটি সংস্করণ দেওয়া হয়েছে (আপনাকে 29 বাইট সংরক্ষণ করে;))।
26

2

জেলি , 30 বাইট

O_31×J_¥A+\sṪ€µ÷ḢṪ_2Ṡ
ỴṪLç@ỴḢ$

পরীক্ষা স্যুট

সুষম জন্য 0 আউটপুট, ডান জন্য 1, এবং বাম জন্য -1।

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

O_31×J_¥A+\sṪ€µ÷ḢṪ_2Ṡ - helper function. Arguments position of pivot and first line
O                        - char codes of first line
 _31                     - subtract 31 to get weight
    ×                    - elementwise product with:
     J_¥                 - distances from the pivot
        A                - absolute value
         +\              - cumulative sum
           s             - split to get [[...,left weight],...,[..., right + left weight]]
            Ṫ€           - last element of each sublist: [left weight, ... right weight]
              µ÷Ḣ        - get ratio of each element over left weight: ratio n indicates
                              right + left = n × left ===> right = left if n = 2
                 _2      - subtract 2: positive is right>left and negative is right<left
                   Ṡ     - return the sign of this


ỴṪLç@ỴḢ$              - main link. Argument: 3 line string.
   ç@                  - apply helper function with arguments:
Ỵ                        - split by linefeeds
 Ṫ                       - last line
  L                      - length (returns position of pivot)
       $               - and
     Ỵ                   - split by linefeeds
      Ḣ                  - first line              

2

জেলি , 24 বাইট

ṪO_31
ỴµṪLạЀṪL$×Çṣ0S€IṠ

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

-1বাম দিকে পড়ার 0জন্য, ভারসাম্য বজায় রাখা, 1ডান পতনের জন্য (পুরো প্রোগ্রাম)।
[-1]বাম দিকে পড়ার [0]জন্য, ভারসাম্য রক্ষার জন্য, [1]ডান পতনের জন্য (ফাংশন)।

প্রথম লাইনে অবশ্যই চলমান স্থান থাকতে হবে, শেষ লাইনটি অবশ্যই হবে না।

ব্যাখ্যা (আমরা নীচের লাইন দিয়ে শুরু করি):

প্রথমত, আমরা স্বতন্ত্র লাইনের সাথে কাজ করছি, সুতরাং আমাদের সেগুলি কোনওভাবে পাওয়া দরকার। এটি একটি কাজ । তারপরে, আমাদের \nইনপুটটির -স্প্লিট সংস্করণটি এমনভাবে ব্যবহার করা উচিত যেন এটি আসল ইনপুট, তাই আমরা ব্যবহার করিµ করা উচিত বর্তমান মানটিতে একটি monadic চেইন প্রয়োগ করতে ।

এখন আমরা আসল কাজ শুরু করি এবং আমাদের প্রথম কাজটি ওজনের কারণগুলি গণনা করা হবে। মূলত এটি একটি ব্যাপ্তি [দূর থেকে বাম থেকে পিভট দূরত্ব..0.. পিভট থেকে দূরে ডানদিকে]। প্রথমত, আমাদেরকে পাইভটটির 1 ভিত্তিক সূচকটি সন্ধান করতে হবে, যা ফাঁকা স্থান ছাড়াই মূলত শেষ লাইনের দৈর্ঘ্য। সুতরাং আমরা আমাদের মূল তালিকা থেকে শেষ লাইনটি (পিভট লাইন) পপ করব, যেহেতু আমাদের আর এটির প্রয়োজন হবে না, এবং তারপরে আমরা এর দৈর্ঘ্যটি নিয়ে থাকি L। আমাদের তখন রডের দৈর্ঘ্য নিতে হবে, যার জন্য আমরা এখনকার সর্বশেষ লাইনে (রড লাইন) একই জিনিসটি করি ṪL$। পরিশেষে, পরিসীমা পেতে, আমরা মানচিত্র | x - y | [1..rod দৈর্ঘ্য], যেখানে x হল পিভট সূচক এবং yআমরা তালিকাভুক্ত তালিকার প্রতিটি উপাদান। আমরা এই ব্যবহার করে না ạЀ, যেখানে হিসাব করে | x - y | এবং Ѐরড দৈর্ঘ্য সহ 1 থেকে শুরু করে range এখন আমরা আমাদের পছন্দসীমাটি করব।

এর পরে, আমাদের প্রতিটি পূর্ণসংখ্যাকে রডের একটি টুকরোকে প্রতিনিধিত্ব করে এর সাথে সম্পর্কিত ওজন দিয়ে গুণিত করতে হবে। ওজন গণনা করতে, আমরা ব্যবহার করি Ç, আমাদের কোডের শীর্ষ লাইনে going আমরা সঙ্গে অবশিষ্ট লাইন নিতে , সঙ্গে তার charcodes Oএবং তারপর আমরা গণনা এক্স - 31 ব্যবহার _31, x প্রতিটি charcode হচ্ছে। তারপরে আমরা স্থান 1 ওজন 1 (0 + রড টুকরা = 1), !ওজন 2 (1 + 1) ইত্যাদির জন্য করি। আমরা শীর্ষ লাইনের সাথে সম্পন্ন করেছি, সুতরাং এখন Çওজনগুলির তালিকাটি ফিরে আসবে, যা আমরা এটির সাথে গুণিত করব সঙ্গে রড টুকরা প্রতিনিধিত্ব পূর্ণসংখ্যার ×

এর পরে, আমরা ṣ0পাইভট পয়েন্টে বিভক্ত হয়ে 0 দ্বারা প্রতিনিধিত্ব করি (যেহেতু কোনও ওজন ফলাফলের উপর প্রভাব ফেলবে না) ফলে ফর্মের একটি তালিকা তৈরি হয় [[প্রথম ওজন, ২ য় ওজন ... পাইভটের ঠিক আগে ওজন]] , [পিভোটের ঠিক পরে ওজন, একের আগে ওজন ... শেষ ওজন]]। এই তালিকাগুলি রডের বাম এবং ডানদিকে উপস্থাপন করে। আমরা এখন S€প্রতিটি পাশের মোট ওজন পেতে প্রতিটি তালিকার সংক্ষিপ্তসার করেছি এবং Iব-দ্বি ভারী হলে নেতিবাচক হবে, বাম দিকটি ভারী হলে শূন্য এবং ডান দিকটি ভারী হলে ধনাত্মক হবে । সুতরাং, আমাদের সুবিধার জন্য এটি যথাযথভাবে ব্যবহার করে চূড়ান্ত ফলাফলটি ফেরত দিতে, আমরা সাইনটি সাথে নিই


2

এপিএল (ডায়ালগ) , ৪৩ বাইট *

{×(¯31+⎕UCS⊃⍵)+.×(⍳≢⊃⍵)-'|'⍳⍨⊃⌽⍵}⎕TC[2]∘≠⊆⊢

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

⊆⊢ আর্গুমেন্টকে অক্ষরগুলিতে চালিত করে

⎕TC[2]∘≠2 তম টি টি এর্মিনাল সি অন্ট্রোল চরিত্রের (লাইনফিড) **  থেকে আলাদা

{} স্ট্রিংয়ের তালিকায় নিম্নলিখিত বেনামে ফাংশনটি প্রয়োগ করুন:

⊃⌽⍵ বিপরীত তালিকার প্রথম স্ট্রিংয়ে (যেমন শেষ)

'|'⍳⍨ এটি ɩ পিভট পয়েন্টের ndex

()- নিম্নলিখিত তালিকা থেকে এটি বিয়োগ:

  ⊃⍵ প্রথম স্ট্রিং

   এর দৈর্ঘ্য

   এর সমস্ত d n ডিভাইস

()+.× সেই ওজনগুলি এবং নিম্নলিখিত মানগুলির সাথে ভারযুক্ত সমষ্টি:

  ⊃⍵ প্রথম স্ট্রিং

  ⎕UCSইউ নেভারসাল সি হ্যারেটার এস এবং  কোড পয়েন্টগুলি

  ¯31+ একত্রিশ নেতিবাচক যোগ করুন (রডের জন্য প্রয়োজনীয় অফসেট বিয়োগের জন্য 32)

× এর সাইনাম


* গৃহস্থালির কাজ প্রতি 1 বাইট জন্য, ব্যবহার {×(¯31+⎕UCS↑⍵)+.×(⍳≢↑⍵)-'|'⍳⍨↑⌽⍵}⎕TC[3]∘≠⊂⊢সঙ্গে ⎕ML←3এটি অনলাইন চেষ্টা করুন!
** ⎕TCঅবহেলিত এবং কেবল গল্ফিংয়ের উদ্দেশ্যে এখানে ব্যবহার করা হয়। প্রোডাকশন কোডে একটি ব্যবহার করা উচিত ⎕UCS 10


2

হাস্কেল (ল্যাম্বডাবোট), 142 বাইট

l=length
g[a,c,b]=splitAt(l b)$a++(' '<$[1..l c-l a])
k e=sum$zipWith((*).(-31+).ord)e[1..]
f=signum.uncurry(-).(k.drop 1.reverse***k).g.lines

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

অবরুদ্ধ সংস্করণ:

-- for readability, allows reading top-down/left-right
(.>) = flip (.)

ungolfed =
     lines                                 -- separate out lines into..
  .> (\[a,b,c] ->                          -- a,b,c (first,second,third)
                                           -- ' ' pad the first line & split on pivot
       splitAt (length c) (a ++ replicate (length b - length a) ' ')
     )
  .> (weight.drop 1.reverse *** weight)    -- reverse left half, drop element above pivot & get weight for both
  .> uncurry (-)                           -- subtract right from left
  .> signum                                -- get sign

-- get ord of the character subtract 31 ('=' char from bar),
-- then multiply with scales ([1..]) and sum it all up
weight es = sum $ zipWith (ord .> subtract 31 .> (*)) es [1..]

2

পাইথন 2 , 90 বাইট

def f(s):L=len(s)/3;print cmp(sum((ord(s[i])-31)*(i-s[-L:].find('|'))for i in range(L)),0)

ইনপুট লাইনগুলি সঠিক দৈর্ঘ্যে প্যাড করা (ফাঁকা স্থান সহ) প্রত্যাশা করে। আউটপুট -1জন্য ঝরনা বাম , 0জন্য সুষম , এবং 1জন্য ডান পড়ে

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


94 বাইট

+4 বাইট জন্য আমরা একটি সংস্করণ যা একটি ব্যবহার থাকতে পারে whileলুপ, প্রয়োজন ছিনতাই লাইন বদলে প্যাডেড লাইন:

def f(s):
 i=r=0
 while''<s[i]:r+=(ord(s[i])-31)*(i-s[-3::-1].find('='));i+=1
 print cmp(r,0)

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


1

রুবি, 543 বাইট

def willittip(s)
leftw=0;
rightw=0;
arr=[];
fields=s.split("\n")
pos=fields[2].index("|")
fields[0].split("").each do |i|
arr << i.ord-32
end
arr[pos+1..-1].each_with_index do |x,y|
rightw=rightw+1
if x>0
if pos>0
rightw=rightw+x*(pos-y).abs
else
rightw=rightw+x
end
end
end
arr[0..pos-1].each_with_index do |x,y|
leftw=leftw+1
if x>0
if pos>0
leftw=leftw+x*(pos-y).abs
else
leftw=leftw+x
end
end
end
if leftw==rightw
return "Equal"
elsif leftw<rightw
return "Right"
elsif leftw>rightw
return "Left"
end
end

10
পিপিসিজিতে আপনাকে স্বাগতম! : ডি কোড-গল্ফ চ্যালেঞ্জগুলির লক্ষ্য হ'ল আপনার কোডটি যতটা সম্ভব ছোট করা। আপনি সমস্ত ভেরিয়েবল এবং ফাংশন নামের একটি একক অক্ষর তৈরি করে এবং যেখানেই সম্ভব হোয়াইটস্পেস মুছে ফেলে আপনার কোডের আকার হ্রাস করতে পারেন।
ড্যাফি

1

সি (জিসিসি) , 106107 121 123 124 129 131 বাইট

c,b,l,i;f(char*a){l=strlen(a)/3;for(i=b=c=0;32/a[l*2+c];++c);for(;i<l-1;b+=(a[i]-31)*(i++-c));a=b>0?2:!b;}

বাম দিকে পড়ার জন্য 0, ভারসাম্যের জন্য 1 এবং ডান পতনের জন্য 2 ফিরে আসুন।

একই দৈর্ঘ্য এবং \nস্ট্রিংয়ের দৈর্ঘ্য নির্ধারণের জন্য শেষ করতে তিনটি লাইনের প্রয়োজন ।

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


1

গণিত, 91 92 বাইট

Sign[(v=(g=ToCharacterCode)@#&@@(d=#~StringSplit~"
")-31).(Range@(l=Length)@v-l@g@Last@d)]&

প্রথম লাইনে রডের সাথে একই দৈর্ঘ্য থাকা উচিত। তৃতীয় লাইনে কোনও চলমান স্থান থাকা উচিত।

বাম, ভারসাম্য এবং ডান পড়ার জন্য -1, 0, 1 এ ফিরে আসুন।


1

সি # (.নেট কোর) , 127 95 90 + 18 = 108 বাইট

এই ফাংশনের জন্য প্রথম লাইনটি রডের সমান দৈর্ঘ্যের জন্য ফাঁকা জায়গাগুলির সাথে ডান প্যাড করা উচিত এবং তৃতীয় লাইনে ট্রায়ালিং স্পেস থাকতে হবে না। এই শর্ত অনুমোদিত (প্রশ্নের মন্তব্য দেখুন)।

s=>s.Split('\n')[0].Select((c,i)=>(c-31)*(i-s.Split('\n')[2].Length+1)).Sum().CompareTo(0)

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

আউটপুট:

টিপ বামের জন্য -1 টিপস ডানদিকে 1 টি
ব্যালেন্সের
জন্য


1

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

পাইথন ২.7 এও কাজ করে

def f(s):i,b,p=s.split('\n');c=p.find('|');l=sum((ord(e)-32)*(c-i.find(e))for e in i[:c])+sum(x for x in range(1,c+1));r=sum((ord(e)-32)*i[c:].find(e)for e in i[c:])+sum(x for x in range(len(b[c:])));return(l>r)-(r>l)

বাম-পাশের জন্য 1, ডান-পাশের জন্য -1, বা সুষম হলে শূন্য ফিরে আসে।

পঠনযোগ্য সংস্করণ:

def f(s):
    i,b,p = s.split('\n')
    c = p.find('|')

    l = sum((ord(e)-32)*(c-i.find(e))for e in i[:c])+sum(x for x in range(1, c+1))
    r = sum((ord(e)-32)*i[c:].find(e)for e in i[c:])+sum(x for x in range(len(b[c:])))

    return(l>r)-(r>l)

1
আপনার দরকার নেই sum([...]), আপনি কেবল পারেনsum(...)
মিস্টার এক্সকোডার

@ ডেফি এটি আপনার স্পেসিফিকেশন এবং প্রদত্ত সমস্ত উদাহরণের ইনপুটগুলির সাথে 100% অনুসারে হওয়া উচিত। আপনি যদি রাজি হন তবে দয়া করে আমাকে জানান যাতে আমি এটি আরও অনুকূল করতে পারি। ধন্যবাদ.
VeganaiZe

@ ওয়েগানাইজে আমার সমস্ত পরীক্ষায় উত্তীর্ণ হয়েছে, ভাল দেখাচ্ছে! :)
ড্যাফি

1
এটি সংক্ষিপ্ত করার জন্য স্টাফ: i[c:].find(e)হতে পারে i.find(e,c), ব্যবহার i,m,n=s.split('\n')এবং একেবারে প্রয়োজনীয়তা এড়াতে s, return 2*(r>l) or l>rনাটকীয়ভাবে শেষে পরীক্ষা ব্যয় হ্রাস করতে ব্যবহার করুন (রিটার্নের মান সংখ্যার সমতুল্য, তবে এটি এর Trueপরিবর্তে 1এবং Falseপরিবর্তে 0), বা সত্যই, ভিন্ন ভিন্ন সেট ব্যবহার করুন return (l>r)-(r>l)পুরানো cmpফাংশনটি যেভাবে করেছে 1, 0 বা -1 প্রদান করতে মানগুলি এবং কর ।
শ্যাডোর্যাঞ্জার

ধন্যবাদ শ্যাডোর্যাঙ্গার, মিঃ এক্সকোডার এবং ড্যাফি! @ শ্যাডোএ্যাঞ্জার আমাকে এই i[c:]কারণেই আটকে ছিলেন কারণ সংক্ষিপ্ত পথটি কিছু কোণার কেস ইনপুটগুলির জন্য এক অদ্ভুত বিষয়কে কেন্দ্র করে ফেলেছে ( |মাঝখানে একে একে বারের উপরে রাখার চেষ্টা করুন )।
VeganaiZe

1

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

for([$a,$b,$c]=explode("
",$argn);$b[$i];)$w+=(strpos($c,"|")-$i++)*8*(max(1,ord($a[$i])-31));echo$w<=>0;

প্রিন্টস -1/ 0/ 1বাম / ভারসাম্য / ডানদিকে। পাইপ হিসাবে চালনা করুন-nR বা এটি অনলাইনে চেষ্টা করুন

ভাঙ্গন

for([$a,$b,$c]=explode("\n",$argn); # import input
    $b[$i];)                        # loop through bar
    $f+=                                # add to force:
        ($i-strpos($c,"|"))             # distance (<0 if left, >0 if right of pivot)
        *8                              # *8
        *(max(1,ord($a[$i++])-31));     # *weight
echo$f<=>0;                         # print -1 if $f<0, 1 if $f>0, 0 if $f==0

1

কাঠকয়লা , 31 বাইট

A⁰ξFLθA⁺ξ×⁻ι⌕ζ|⁻℅§θι³¹ξI⁻›ξ⁰‹ξ⁰

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যালেন্সের জন্য 0 আউটপুট বা বাম বা ডান পড়ার জন্য -1 বা 1। সম্পাদনা: চারকোলের পরিবর্তনের অর্থ এখন ≔ΣEθ×⁻κ⌕ζ|⁻℅ι³¹ξI⁻›ξ⁰‹ξ⁰24 বাইটের জন্য কাজ করে: এটি অনলাইনে চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। দ্রষ্টব্য: উভয় উত্তরের জন্য প্যাডেড ইনপুট প্রয়োজন, তবে 3 বাইট ব্যয়ে আনপ্যাডেড ইনপুট গ্রহণ করতে মানিয়ে নেওয়া যেতে পারে: ≔⁰ξFLη≔⁺ξ×⁻ι⌕ζ|⁻℅§◨θLηι³¹ξI⁻›ξ⁰‹ξ⁰ অনলাইনে চেষ্টা করে দেখুন! ≔ΣE◨θLη×⁻κ⌕ζ|⁻℅ι³¹ξI⁻›ξ⁰‹ξ⁰ এটি অনলাইন চেষ্টা করুন! লিঙ্কগুলি কোডটির ভার্জোজ সংস্করণে রয়েছে।


আপনি এটি উল্লেখ করতে চাইতে পারেন এটি প্রত্যাশা করে যে ইনপুট লাইনগুলি ফাঁকা জায়গাগুলির সাথে সঠিক দৈর্ঘ্যে প্যাড করা হবে, যাতে কোনও আনপ্যাডযুক্ত ইনপুট কাজ না করে।
ফ্লিপট্যাক

@ ফ্লিপট্যাক আরও ভাল, আমি এমন সংস্করণ তৈরি করেছি যা আনপ্যাডযুক্ত ইনপুট গ্রহণ করে।
নীল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.