পারস্পরিক প্রতিলিপি


17

যাক A একটি ধনাত্মক পূর্ণসংখ্যা গঠিত হতে n দশমিক সংখ্যা d1,d2,...,dnB আরও একটি ইতিবাচক পূর্ণসংখ্যার হতে দিন ।

এই প্রতিদ্বন্দ্বিতা উদ্দেশ্য পূরণকল্পে, আমরা কল A একটি copycat এর B যদি ধনাত্মক পূর্ণসংখ্যা অন্তত এক তালিকা বিদ্যমান p1,p2,...,pn যেমন:

i=1ndipi=B

A এবংB বলা হয়পারস্পরিক copycatsযদিA একটি copycat হয়B এবংB একটি copycat হয়A

উদাহরণ

526 এবং853 পরস্পরবিরোধী অনুলিপি কারণ:

53+29+63=853

এবং:

83+51+32=526

চ্যালেঞ্জ

দুটি এবং ইতিবাচক পূর্ণসংখ্যার A এবং B , আপনার কাজটি হ'ল যদি A এবং B একে অপরের পারস্পরিক প্রতিলিপি বা মিথ্যা মান হয় তবে সত্যবাদী মানটি প্রিন্ট করা বা প্রত্যাবর্তন করা।

ব্যাখ্যা এবং বিধি

  • আপনি যেকোন যুক্তিসঙ্গত, দ্ব্যর্থহীন বিন্যাসে A এবং B নিতে পারেন (যেমন পূর্ণসংখ্যা, স্ট্রিং, অঙ্কগুলির তালিকা, ...)
  • A এবংB সমান হতে পারে। যদি কোনও সংখ্যা নিজেই একটি পারস্পরিকপ্রতিলিপি হয় তবেএটিA007532 এরঅন্তর্গত।
  • সত্যবাদী / মিথ্যা মানগুলির পরিবর্তে, আপনি দুটি স্বতন্ত্র ধারাবাহিক মান ফিরে আসতে পারেন ।
  • জন্য 1A<1000 এবং 1B<1000 , আপনার কোডে সম্পূর্ণ করতে হবে কম এক মিনিট । উচ্চতর মানগুলির জন্য যদি এটি খুব বেশি সময় নেয় তবে তা অবশ্যই তাত্ত্বিকভাবে সেগুলি সমাধান করতে সক্ষম হবে।
  • এটি

পরীক্ষার মামলা

Truthy:
1 1
12 33
22 64
8 512
23 737
89 89
222 592
526 853
946 961
7 2401
24 4224
3263 9734
86 79424
68995 59227
32028 695345

Falsy:
1 2
3 27
9 24
24 42
33 715
33 732
222 542
935 994
17 2401
8245 4153

প্রস্তাবিত মামলা: 17 2401 -> false। আমি এই সম্পর্কে প্রায় ট্রিপড।
শিয়ারু আসাকোটো

উত্তর:


8

ব্র্যাচল্যাগ , 19 বাইট

ẹ{∧ℕ₁;?↔^}ᵐ².+ᵐ↔?∧≜

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

আউটপুট true.বাfalse.

ব্যাখ্যা

ẹ                     Split the numbers into lists of digits
 {       }ᵐ²          For each digit
  ∧ℕ₁                 Let I be a strictly positive integer
     ;?↔^                Compute the digit to the power I (which is unknown currently)
            .         Call . the list of those new numbers
            .+ᵐ       Their mapped sum results…
               ↔?     …in the reverse of the input
                 ∧≜   Find if there effectively are values for the numbers in . to satisfy
                        these relationships

2
@ আর্নাউল্ড 1 বাইট ব্যয়ে স্থির। এটা তোলে ব্যর্থ হয়েছে কারণ 2401অন্তর্ভুক্ত একটি 0কোন পথে আমি চেক দিয়ে কাজ করে নি Iকঠোরভাবে ইতিবাচক ছিল (কারণ আমি এটা উভয় ম্যাপ Iএবং অঙ্ক বাইট সংরক্ষণ করতে)
Fatalize

6

হুশ , 17 বাইট

Λλ€⁰mΣΠTṪ^ḣ√⁰d)De

এটি অনলাইন চেষ্টা করুন! প্রায় 11 সেকেন্ডের মধ্যে 1000 এর নীচে সমস্ত পরীক্ষার কেস সমাপ্ত করে।

ব্যাখ্যা

Λλ€⁰mΣΠTṪ^ḣ√⁰d)De  Implicit inputs, say 12 and 33.
                e  Put into a list: [12,33]
               D   Duplicate: [12,33,12,33]
Λ                  Does this hold for all adjacent pairs:
                    (12,33 is checked twice but it doesn't matter)
                    For example, arguments are 33 and 12.
 λ            )     Anonymous function with arguments 33 (explicit) and 12 (implicit).
             d      Base-10 digits of implicit argument: [1,2]
          ḣ√⁰       Range to square root of explicit argument: [1,2,3,4]
        Ṫ^          Outer product with power: [[1,2],[1,4],[1,8],[1,16],[1,32]]
       T            Transpose: [[1,1,1,1,1],[2,4,8,16,32]]
      Π             Cartesian product: [[1,2],[1,4],...,[1,32]]
    mΣ              Map sum: [3,5,...,33]
  €⁰                Is the explicit argument in this list? Yes.

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

তাহলে আমরা আছে B=d1p1++dnpn যেখানে di সংখ্যা এবং হয় pi ধনাত্মক পূর্ণসংখ্যা, তারপর হয় dipiB সকলের জন্য i , অথবা equivalently pilogdiB । আমরা মামলাটি di1 উপেক্ষা করতে পারি , যেহেতু 0 বা 1 কে ঘৃণা করা এটি পরিবর্তন করে না। আমার প্রোগ্রামে অনুসন্ধানের স্থানটি1piB1piBlogdiBBdi3Bdi=2log2B>BB=823=812A223A=210kk. In the latter case, A is not a power of 8, so it cannot be a copycat of B anyway, and the program correctly returns a falsy value regardless of the other computation.


Great answer which makes me want to learn Husk. Two questions: 1. the implicit argument is mentioned again after you introduce it. When is it used? 2. Could you elaborate on why this algorithm is equivalent to the one posed in the OP?
Jonah

1
@Jonah 1. The digit function d takes the implicit argument. I clarified this in the explanation. 2. I added an argument for the program's correctness.
Zgarb

Thank you... btw, the part that had confused me was "where does the list of all ones come from?".... rereading i now realize this is merely because all the powers of 1 are just one....
Jonah


4

05AB1E, 26 22 bytes

εVтLIàgãεYSym}OIyKå}˜P

Takes the input as a list (i.e. [526,853]).

Try it online or verify most test cases in the range [1,999].

নীচে আমার পুরানো উত্তর হিসাবে অনুরূপ, [1,n]তালিকায় হার্ডকড করা ব্যতীত [1,100]এবং এটি প্রতিটি ইনপুট-ম্যাপিংয়ের জন্য একবার কার্টেসিয়ান তালিকা তৈরি করে দু'বার, যা পারফরম্যান্সের দিক থেকে মূল বাধা।


পুরানো 26 বাইট উত্তর যা পারফরম্যান্সের জন্য ভাল:

Z©bgL®gãUεVXεYSym}OsN>èå}P

এই সংস্করণে আমি পারফরম্যান্সকে আরও উন্নত করতে কিছু বাইটে লেনদেন করেছি যাতে এটি সহজেই চালানো যায় [1,1000]। সীমাতে [1,9999]সংখ্যাযুক্ত পরীক্ষার কেসগুলি টিআইও-তে প্রায় এক সেকেন্ডে সম্পন্ন হয়। [10000,99999]টিআইও-তে প্রায় 10-15 সেকেন্ডের মধ্যে পরিসীমা ক্ষেত্রে পরীক্ষা করা হয়। উপরে এটি শেষ হবে।

এটি অনলাইনে চেষ্টা করুন বা পরিসীমাতে সংখ্যা সহ সমস্ত পরীক্ষার কেস যাচাই [1,9999]করুন

ব্যাখ্যা:

Z                 # Push the max of the (implicit) input-list (without popping)
                  #  i.e. [526,853] → 853
 ©                # Store it in the register (without popping)
  b               # Convert to binary
                  #  i.e. 853 → 1101010101
   g              # Take its length
                  #  i.e. 1101010101 → 10
    L             # Pop and push a list [1, n]
                  #  i.e. 10 → [1,2,3,4,5,6,7,8,9,10]
     ®            # Push the max from the register
      g           # Take its length
                  #  i.e. 853 → 3
       ã          # Cartesian product the list that many times
                  #  i.e. [1,2,3,4,5,6,7,8,9,10] and 3
                  #   → [[1,1,1],[1,1,2],[1,1,3],...,[10,10,8],[10,10,9],[10,10,10]]
        U         # Pop and store it in variable `X`
ε              }  # Map both values of the input list:
 V                # Store the current value in variable `Y`
  Xε    }         # Map `y` over the numbers of variable `X`
    Y             # Push variable `Y`
     S            # Convert it to a list of digits
                  #  i.e. 526 → [5,2,6]
      ym          # Take each digit to the power of the current cartesian product sublist
                  #  i.e. [5,2,6] and [3,9,3] → [125,512,216]
         O        # Take the sum of each inner list
                  #  i.e. [[5,2,6],[5,2,36],[5,2,216],...,[125,512,216],...]
                  #   → [13,43,223,...,853,...]
          s       # Swap to push the (implicit) input
           N>     # Push the index + 1
                  #  i.e. 0 → 1
             è    # Index into the input-list (with automatic wraparound)
                  #  i.e. [526,853] and 1 → 853
              å   # Check if it's in the list of sums
                  #  i.e. [13,43,223,...,853,...] and 853 → 1
                P # Check if it's truthy for both both (and output implicitly)
                  #  i.e. [1,1] → 1


4

পার্ল 6 , 87 84 69 বাইট

-15 বাইট ধন্যবাদ nwellnhof!

{!grep {!grep $^b,[X+] 0,|map (*X**1..$b.msb+1),$^a.comb},.[0,1,1,0]}

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

অনামী কোড ব্লক যা সত্য বা মিথ্যা প্রত্যাবর্তন করে।

ব্যাখ্যা:

{!grep {!grep $^b,[X+] 0,|map (*X**1..$b.msb+1),$^a.comb},.[0,1,1,0]}

{                                                                   }  # Anonymous code block
 !grep    # None of:
                                                          .[0,1,1,0]   # The input and the input reverse
       {!grep       # None of
                  [X+]       # All possible sums of
                       0,|   # 0 (this is to prevent single digit numbers being crossed with themself)
                          map                  ,$^a.comb   # Each digit mapped to
                              (*X**           )  # The power of
                                   1..$b.msb+1   # All of 1 to the most significant bit of b plus 1
                                                 # This could just be b+1, but time constraints...
              $^b,  # Is equal to b

@ আর্নল্ড, একটি জংশন সত্যবাদী / ফালসি, যেমন আমি আউটপুট দেওয়ার আগে বুলিফাই অপারেটরটি ব্যবহার করে দেখিয়েছি। আমি এটিকে যাইহোক অন্য কিছুতে গল্ফ দিয়েছি, যদিও আমি বাইট সংরক্ষণ করতে পারতাম যদি আমি মিথ্যা এবং তদ্বিপরীতগুলির জন্য সত্যবাদী মান আউটপুট করতে পারি ...?
জো কিং

স্পষ্টির জন্য ধন্যবাদ। সত্যবাদী / মিথ্যা বিপরীত সম্পর্কে: আমি বরং বলি না।
আর্নৌল্ড

4

জাভাস্ক্রিপ্ট (নোড.জেএস) , 116 92 89 86 83 77 বাইট

a=>b=>(G=(c,g,f=h=g%10)=>g?c>f&f>1&&G(c,g,h*f)||G(c-f,g/10|0):!c)(a,b)&G(b,a)

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

যেমন ইনপুট আশা (A)(B)


স্ট্রিং ঠিক আছে। (আমি চ্যালেঞ্জের ইনপুট ফর্ম্যাটটি পরিষ্কার করেছি))
আর্নল্ড

@ আরনাউল্ড ওহ, আমি সবেমাত্র স্ট্রিং ব্যবহার করে নয় তবে 108 বাইট ব্যবহারের একটি পদ্ধতি পেয়েছি।
শিয়ারু আসাকোটো

2

জে , 56 বাইট

h~*h=.4 :'x e.+/|:>,{x 4 :''<y&*^:(x&>)^:a:y''"+"."+":y'

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

হ্যাঁ, নেস্টেড স্পষ্ট সংজ্ঞা!

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

powers =. 4 :'<y&*^:(x&>)^:a:y'  Explicit aux verb. x = target, y = digit
                             y   Starting from y,
               y&*^:     ^:a:    collect all results of multiplying y
                    (x&>)        until the result is at least x
              <                  Box it.

h=.4 :'x e.+/|:>,{x powers"+"."+":y'  Explicit aux verb. x, y = two input numbers
                            "."+":y   Digits of y
                  x powers"+          Collect powers of digits of y under x
                 {            Cartesian product of each item
           +/|:>,             Format correctly and compute the sums
       x e.                   Does x appear in the list of sums?

h~*h  Tacit main verb. x, y = two input numbers
      Since h tests the condition in only one direction,
      test again the other way around (~) and take the AND.

1

পাইথন 2 , 149 147 143 139 132 118 108 107 106 105 বাইট

lambda a,b:g(a,b)*g(b,a)
g=lambda a,b:any(g(a/10,b-(a%10)**-~i)for i in(a*b>0)*range(len(bin(b))))or b==0

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

-4 বাইট, ধন্যবাদ বেদাদ কান্দোই


>0সরানো যেতে পারে। not a: a<1b==0:b<1
বেদন্ত কান্দোই

@ ওয়েডেন্টকান্ডয় ধন্যবাদ, যদিও b<0এটি কাজ করে না
টিফিল্ড

1

জে, 68 বাইট

আমি ভেবেছিলাম যে জে এখানে বেশ ভাল পারফর্ম করবে, তবে এটি আমার প্রত্যাশার চেয়ে আরও শক্ত হয়ে গেল এবং আরও গল্ফ করার জন্য কোনও পরামর্শ পছন্দ করবে ...

g=.#@#:@[
1 1-:[:(([:+./[=1#.]^"#.1+g#.inv[:i.g^#@])"."0@":)/"1],:|.

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

দ্রষ্টব্য: আমরা টিআইও গণনা থেকে 3 টি অক্ষর বিয়োগ করি যেহেতু f=.মূল কার্যটি গণনা করা হয় না

ungolfed

1 1 -: [: (([: +./ [ = 1 #. ] ^"#. 1 + g #.inv [: i. g ^ #@]) "."0@":)/"1 ] ,: |.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.