তুলনা শৃঙ্খলা প্রসারিত করুন


9

বেশির ভাগ ভাষায় ভিন্ন, পাইথন মূল্যায়ণ a<b<cযেমন গণিত মধ্যে সম্পন্ন করা হবে, আসলে তিন নম্বর তুলনা, যেমন বুলিয়ান তুলনা বিরোধিতা a<bকরার c। এটি সিতে লেখার সঠিক উপায় (এবং আরও অনেকে) হবে a<b && b<c

এই চ্যালেঞ্জের মধ্যে, আপনার কাজটি পাইথন / স্বজ্ঞাত উপস্থাপনা থেকে এটি অন্যান্য ভাষায় কীভাবে লেখা হবে তা নির্বিচারে দৈর্ঘ্যের এমন তুলনা শৃঙ্খলাগুলি প্রসারিত করা।

বিশেষ উল্লেখ

  • তোমার প্রোগ্রাম অপারেটার হ্যান্ডেল করতে হবে: ==, !=, <, >, <=, >=
  • ইনপুটটিতে কেবলমাত্র পূর্ণসংখ্যা ব্যবহার করে তুলনা শৃঙ্খলা থাকবে।
  • পথে যে কোনও তুলনার সত্যতা সম্পর্কে চিন্তা করবেন না, এটি নিখুঁতভাবে পার্সিং / সিনট্যাকটিক্যাল চ্যালেঞ্জ।
  • ফাঁকা জায়গায় বিভক্ত হয়ে পার্সিংকে তুচ্ছ করে উত্তরগুলি প্রতিরোধের জন্য ইনপুটটির কোনও শ্বেত স্পেস থাকবে না।
  • যাইহোক, আপনার আউটপুটে কেবল একটি &&, অথবা তুলনা অপারেটর এবং এর উভয়ই উভয়কে ঘিরে একক স্থান থাকতে পারে &&তবে সামঞ্জস্যপূর্ণ হতে পারে।

পরীক্ষার কেস

Input                  Output
---------------------------------------------------------------

3<4<5                  3<4 && 4<5
3<4<5<6<7<8<9          3<4 && 4<5 && 5<6 && 6<7 && 7<8 && 8<9
3<5==6<19              3<5 && 5==6 && 6<19
10>=5<7!=20            10>=5 && 5<7 && 7!=20
15==15==15==15==15     15==15 && 15==15 && 15==15 && 15==15

এই , তাই বাইটস মধ্যে সংক্ষিপ্ত কোড !

code-golf  parsing  conversion  syntax  code-golf  sequence  primes  code-challenge  geometry  optimization  code-golf  graph-theory  code-golf  number-theory  primes  integer  code-golf  source-layout  cops-and-robbers  code-golf  source-layout  cops-and-robbers  code-golf  sequence  primes  integer  code-golf  math  number-theory  primes  rational-numbers  code-golf  math  sequence  number-theory  primes  code-golf  string  code-golf  math  combinatorics  permutations  restricted-complexity  code-golf  array-manipulation  code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 


আমার দু'পাশে দুটি জায়গা থাকতে পারে &&?
এইচ.পি.উইজ

@ এইচ.পি.উইজ নাহ, শ্রীরা।
মাল্টেসেন

উত্তর:


6

রেটিনা , 33 22 17 বাইট

-5 বাইটস @ মার্টিনএেন্ডারকে ধন্যবাদ

-2`\D(\d+)
$&&&$1

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


@ মার্টিনএেন্ডার একটি করুণা 1>-2উভয় প্রান্ত থেকে একবারে সীমাবদ্ধ করতে কাজ করে না ...
নীল

@ নীল হ্যাঁ, রেটিনা 1.0 যেখানে সম্ভব সেখানে একটি নতুন সীমা বাক্য গঠন করবে।
মার্টিন ইন্ডার

আপনি একটি ব্যাখ্যা পোস্ট করতে পারেন?
জেমস

5

হুশ , 16 14 বাইট

প্রতিটি অপারেটরের চারপাশে একটি স্থান মুদ্রণ করে।

wJ"&&"m←C2X3ġ±

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

ব্যাখ্যা:

                  Implicit input, e.g            "3<4<5<6"
            ġ±    Group digits                   ["3","<","4","<","5","<","6"]
          X3      Sublists of length 3           [["3","<","4"],["<","4","<"],["4","<","5"],["<","5","<"],["5","<","6"]]
        C2        Cut into lists of length 2     [[["3","<","4"],["<","4","<"]],[["4","<","5"],["<","5","<"]],[["5","<","6"]]]
      m←          Take the first element of each [["3","<","4"],["4","<","5"],["5","<","6"]]
 J"&&"            Join with "&&"                 ["3","<","4","&&","4","<","5","&&","5","<","6"]
w                 Print, separates by spaces

সুন্দর. স্থানগুলির সাথে স্ট্রিংগুলিতে যোগ দেওয়ার জন্য আপনি আরও সরাসরি পদ্ধতির wপরিবর্তে ব্যবহার করতে পারেন;
লিও

ওহ হ্যাঁ, আমি কীভাবে তা ভেবে দেখিনি?
এইচ.পি.উইজ

3

(==|!=|<=?|>=?)হতে পারে \D+
ovs

একইভাবে (?<!^|\d)হতে পারে (?<=\D)। এছাড়াও (?=\d+)অপ্রয়োজনীয়, অপারেটর সর্বদা একটি অপারেন্ড দ্বারা অনুসরণ করা হবে, যার +পরে আপনি পরেটি ড্রপ করতে পারেন \D। এর $&পরিবর্তে এটিও রয়েছে $1$2এবং তারপরে ক্যাপচার করে পিছনে তাকানোর পরিবর্তে আরও একটি বাইট সংরক্ষণ করা যায় looking
নীল

(\D(\d+))(?=\D)লাইনে 1 এবং $1&&$2দুটি লাইনে যথেষ্ট ( 22 বাইট )। এখানে চেষ্টা করুন।
কেভিন ক্রুইজসেন


2

Clojure, 88 বাইট

আপডেট: subsপরিবর্তে clojure.string/join

#(subs(apply str(for[p(partition 3 2(re-seq #"(?:\d+|[^\d]+)" %))](apply str" && "p)))4)

2

জে , 59 46 বাইট

4(}.;)_2{.\3' && '&;\]</.~0+/\@,2~:/\e.&'!<=>'

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

এটি কিভাবে কাজ করতে ব্যবহৃত

                        (0 , }. ~:&(e.&'!<=>') }:)

আমরা অপারেটরের সীমানা খুঁজছি। "শিরশ্ছেদ" এবং "কৃপিত" স্ট্রিংগুলি শূন্য এবং এমন একগুলিতে রূপান্তরিত হয় যেখানে 0s অঙ্ক হয়, তারপরে একসাথে জোরেড হয়। দৈর্ঘ্যের সাথে মেলে শূন্যটি প্রস্তুত করুন।

                   +/\                      </. ]     Split on boundaries. 
              ┌──┬──┬─┬─┬─┬──┬──┐
              │10│>=│5│<│7│!=│20│
              └──┴──┴─┴─┴─┴──┴──┘
         3' && '&;\          Add && to infixes of 3.
              ┌────┬──┬──┬──┐
              │ && │10│>=│5 │
              ├────┼──┼──┼──┤
              │ && │>=│5 │< │
              ├────┼──┼──┼──┤
              │ && │5 │< │7 │
              ├────┼──┼──┼──┤
              │ && │< │7 │!=│
              ├────┼──┼──┼──┤
              │ && │7 │!=│20│
              └────┴──┴──┴──┘
    _2{.\                    Take even numbered rows.
;}.,                         Concatenate after dropping the first box.


1

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

≔ ηFθ«¿›ι9«F›η!⁺&&η≔ωη»≔⁺ηιηι
≔ ηFθ«F∧›ι9›η!⁺&&η≔⎇›ι9ω⁺ηιηι

একই বেসিক অ্যালগরিদমের দুটি সামান্য ভিন্ন সূত্র। ইনপুট স্ট্রিংটি অক্ষর দ্বারা পুনরাবৃত্তি হয়। অঙ্কগুলি যেমন পাওয়া যায় তারা এগুলি একটি চলকতে সংগ্রহ করা হয়। যখন একটি সংখ্যা এবং অপারেটরের মধ্যে একটি সীমানা পাওয়া যায়, একটি অতিরিক্ত "&&" প্লাস ভেরিয়েবল মুদ্রিত হয় এবং ভেরিয়েবলটি সাফ হয়ে যায়। ভেরিয়েবলটি প্রাথমিকভাবে একটি স্পেসে প্রাথমিকভাবে শুরু করা হয় যাতে প্রথম সীমানা অতিরিক্ত "&&" ট্রিগার না করে।


1

জেলি , 16 বাইট

e€ØDŒg⁸ṁṡ3m2j⁾&&

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

ব্যাখ্যা:

e€ØDŒg⁸ṁṡ3m2j⁾&& Uses Jelly stringification, thus full program only
eۯD             For each each char, 1 if it's in '0123456789', otherwise 0
    Œg           Split into longest runs of equal elements
      ⁸ṁ         Reshape original input like the list we just made
                 Reshaping will separate numbers from operators
        ṡ3       Get contiguous sublists of length 3
          m2     Keep every second item, starting from the first
                 This will keep every (number operator number) and
                 remove every (operator number operator) substring
            j⁾&& Join with '&&'

1

জাভা 8, 46 বাইট

s->s.replaceAll("(\\D(\\d+))(?=\\D)","$1&&$2")

ব্যাখ্যা:

এখানে চেষ্টা করুন।

s->                       // Method with String as both parameter and return-type
   s.replaceAll("(\\D(\\d+))(?=\\D)",
                "$1&&$2") //  Replace the match of the regex
                          //  with the second String
                          // End of method (implicit / single-line return-statement)

রেজেক্স ব্যাখ্যা:

(\D(\d+))(?=\D)   # 1) For all matches of this regex
   (\d+)          #  Capture group 2: a number (one or more digits)
(\D \d+ )         #  Capture group 1: anything but a number + the number
                  #   (`\D` will match the `=`, `!`, `<`, or `>`)
         (?=\D)   #  Look-ahead so everything after the match remains as is

 $1&&$2           # 2) Replace it with
 $1               #  Result of capture group 1 (trailing part of the equation + the number)
   &&             #  Literal "&&"
     $2           #  Result of capture group 2 (the number)

প্রতিস্থাপনের ধাপে ধাপে উদাহরণ:

Initial:                             10>=5<7!=20
 Match of first replacement:            =5
 Replace with:                          =5&&5
After first replacement:             10>=5&&5<7!=20
 Match of second replacement:                <7
 Replace with:                               <7&&7
After second replacement (result):   10>=5&&5<7&&7!=20



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