Palindromic অবশিষ্টাংশ


25

আজ, আমি যেমন এটি লিখছি, 31 শে মার্চ। মার্কিন যুক্তরাষ্ট্রে, এই হয় 3/31। আমি 331একটি চ্যালেঞ্জ নিয়ে আসার জন্য একটি সংখ্যা হিসাবে ঘুরে বেড়াচ্ছিলাম এবং দেখতে পেলাম যে এর অবশিষ্টাংশগুলি (মডুলো ছোট সংখ্যা) প্যালিনড্রোমিক। 331%2=1, 331%3=1, 331%4=3, 331%5=1, 331%6=1( 11311)।

এখানে আপনার চ্যালেঞ্জটি হ'ল, যখন কোনও পূর্ণসংখ্যা দেওয়া হয় তখন n > 2প্রথম nধনাত্মক সংখ্যাগুলিকে আউটপুট দেয় যা মডিউল নেওয়ার সময় প্যালিনড্রমিক অবশিষ্টাংশ থাকে [2,n]

উদাহরণস্বরূপ, ইনপুট জন্য 7, আউটপুট হতে হবে 1, 42, 43, 140, 182, 420, 421। এখানে কেন চার্টটি কেন তা ব্যাখ্যা করছে:

        mod
num | 2 3 4 5 6 7
-----------------
  1 | 1 1 1 1 1 1
 42 | 0 0 2 2 0 0
 43 | 1 1 3 3 1 1
140 | 0 2 0 0 2 0
182 | 0 2 2 2 2 0
420 | 0 0 0 0 0 0
421 | 1 1 1 1 1 1

ইনপুট

একটি একক ধনাত্মক পূর্ণসংখ্যা nসঙ্গে n > 2 কোনো সুবিধাজনক বিন্যাসে

আউটপুট

nউপরে উল্লিখিত হিসাবে প্রথম প্যালিনড্রোমিক অবশিষ্টাংশগুলির ফলাফলের অ্যারে / তালিকা । আবার, কোনও উপযুক্ত বিন্যাসে।

বিধি

  • এর জন্য n > 10, অনুমান করুন যে এটি প্যালিনড্রোম কিনা তা যাচাই করার আগে অবশিষ্টাংশের তালিকাটি সমতল করা হবে। অর্থাত্ [1, 10, 11]প্যালিনড্রোমিক, তবে [1, 10, 1]তা নয়।
  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য। যদি কোনও ফাংশন হয় তবে আপনি আউটপুটটি মুদ্রণের পরিবর্তে ফিরিয়ে দিতে পারেন।
  • যদি সম্ভব হয় তবে দয়া করে একটি অনলাইন পরীক্ষার পরিবেশের একটি লিঙ্ক অন্তর্ভুক্ত করুন যাতে অন্য লোকেরা আপনার কোডটি চেষ্টা করে দেখতে পারে!
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।

উদাহরণ

[input]
[output]

3
[1, 6, 7]

4
[1, 4, 5, 8]

5
[1, 50, 60, 61, 110]

6
[1, 30, 31, 60, 61, 90]

7
[1, 42, 43, 140, 182, 420, 421]

8
[1, 168, 169, 336, 337, 504, 505, 672]

9
[1, 2520, 2521, 5040, 5041, 7560, 7561, 10080, 10081]

10
[1, 280, 281, 560, 1611, 1890, 1891, 2170, 2171, 2241]

11
[1, 22682, 27720, 27721, 50402, 55440, 55441, 78122, 83160, 83161, 105842]

আউটপুট অর্ডার করার কথা?
আর্নল্ড

@ আরনাউল্ড এটির দরকার নেই, না, তবে এটি কেবল প্রথম nউপাদানগুলিকে অন্তর্ভুক্ত করে।
অ্যাডমবর্কবার্ক

2
আরেগ ... আপনার চ্যালেঞ্জ = আপনার নিয়ম, তবে " [1, 10, 11]প্যালেন্ড্রোমিক, তবে [1, 10, 1]এটি" গণিতগতভাবে ভুল বলে মনে হচ্ছে না।
গ্রেগ মার্টিন

1
@ গ্রেগমার্টিন স্ট্রিং প্যালিনড্রোমস, ম্যাথি প্যালিনড্রোমস নয়। ;-)
অ্যাডমবর্কবার্ক

1
grr। ম্যাথিক প্যালিনড্রোমের পরিবর্তে পুরো স্ট্রিংটি নির্দিষ্ট ভাষায় এটি হাজার গুণ বেশি শক্ত করে তোলে। আচ্ছা ভালো.
মাইল্ডলি মিল্কিওয়েস্ট

উত্তর:


9

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

f n=take n[x|x<-[1..],(==)=<<reverse$show.mod x=<<[2..n]]

ব্যবহারের উদাহরণ: f 4-> [1,4,5,8]এটি অনলাইন চেষ্টা করুন!

প্রথমটি =<<ফাংশন প্রসঙ্গে এবং ল্যাম্বডায় অনুবাদ করে এবং \x -> reverse x == xদ্বিতীয়টি =<<তালিকা প্রসঙ্গে এবং সমতুল্য concatMap, যেমন মানচিত্র এবং সমতল-এক-তালিকা-স্তরের।


5

05 এ বি 1 ই , 12 বাইট

µN2¹Ÿ%JÂQD½–

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

ব্যাখ্যা

µ              # until counter equals input do:
 N             # push current iterations number
     %         # modulus each in
  2¹Ÿ          # range [2 ... input]
      J        # joined to string
       ÂQ      # equals it's reverse
         D     # duplicate
          ½    # if true, increase counter
           –   # if true print iteration number

আপনি কি আপনার ফোন থেকে 05AB1E উত্তর পোস্ট করেন? আপনি এই দ্রুত LOL করতে কারণ।
ম্যাজিক অক্টোপাস উরন

@ কারাসোকম্পিউটিং: সিপি -১২২২ তে প্রচুর চরিত্র হিসাবে খুব কমই ফোনে কপি / পেস্ট টাইপ করতে বিরক্ত করছে। রাতের খাবারের পরে আমার কম্পিউটারটি পরীক্ষা করার আগে এই
ঠিকঠাকভাবে উঠে


4

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

f=(n,x=(k=--n,2))=>k?([...Array(n)].map(_=>(r=x%++i+r,x%i),i=1,r='').join``==r?k--&&x+' ':'')+f(n,x+1):1

ডেমো

এনবি : অসংখ্য পুনরাবৃত্ত কলগুলির কারণে, এটি ফায়ারফক্সে এন> 8 বা ক্রোমে এন> 10 এর জন্য ক্রাশ হবে ।


4

পাইথন 2, 98 97 বাইট

n=input();i=j=0
while i<n:
 j+=1;l=''
 for k in range(2,n+1):l+=`j%k`
 if l==l[::-1]:i+=1;print j

অনলাইনে চেষ্টা করে দেখুন!



@ রড ধন্যবাদ, তবে আমি বিশ্বাস করি যে প্যালিনড্রোম হিসাবে বিবেচিত 12অদ্ভুত নিয়মের কারণে ইনপুটটিতে ব্যর্থ হবে[1, 10, 11]
গণিত জাঙ্কি

3

এমএটিএল , 19 বাইট

কোডটির আগের সংস্করণে ভুলটি নির্দেশ করার জন্য @ অ্যাডমবর্কবার্ককে ধন্যবাদ, এখন সংশোধন করা হয়েছে

`@Gq:Q\VXztP=?@]NG<

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

ব্যাখ্যা

`        % Do...while
  @      %   Push iteration index, starting at 1
  Gq:Q   %   Push [2 3 ... n], where n is the input
  \      %   Modulo, element-wise
  V      %   Convert to string. Numbers are separated by spaces
  Xz     %   Remove spaces
  tP     %   Duplicate, flip
  =      %   Equal? (element-wise)
  ?      %   If all results were true
    @    %     Push current iteration index. It is one of the sought numbers
  ]      %   End
  N      %   Push number of elements in stack
  G      %   Push input n
  <      %   Less than? This is the loop condition
         % End (implicit). Display (implicit)

3

স্কালা, 90 86 82 বাইট

(n:Int)=>Stream.from(1)filter{i=>val d=(2 to n)map(i%)mkString;d.reverse==d}take(n)

ব্যাখ্যা

Stream.from(1)                              // From an infinite Stream starting from 1,
    filter ( i => {                         // keep only elements matching the next condition :
        val d=(2 to n)map(i%)mkString;      // Generate residues and convert to String,
        d.reverse==d                        // return true if palindrom, false otherwise
    })take(n)                               // Finally, take the n first elements matching the condition

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

val f = (n:Int)=>...    // assign function
(3 to 11).foreach { i =>
    println(i + "\n" + f(i).mkString(", ") + "\n")
}

ফলাফল

3
1, 6, 7

4
1, 4, 5, 8

5
1, 50, 60, 61, 110

6
1, 30, 31, 60, 61, 90

7
1, 42, 43, 140, 182, 420, 421

8
1, 168, 169, 336, 337, 504, 505, 672

9
1, 2520, 2521, 5040, 5041, 7560, 7561, 10080, 10081

10
1, 280, 281, 560, 1611, 1890, 1891, 2170, 2171, 2241

11
1, 22682, 27720, 27721, 50402, 55440, 55441, 78122, 83160, 83161, 105842

সম্পাদনাগুলি

# 1 (90 => 86)

  • বেনামে ফাংশন

# 2 (86 => 82)

  • প্রথম বন্ধনী বা বন্ধনীর পরে অকেজো ডট অক্ষর মুছে ফেলুন (উদাঃ: (2 to n).map(%i)=>(2 to n)map(%i)

1
পিপিসিজিতে আপনাকে স্বাগতম!
মার্টিন এন্ডার

ধন্যবাদ! আমি ভাবছিলাম আমি পরিবর্তন def f(n:Int)=করতে পারি কিনা (n:Int)=>, যেহেতু এটি কোনও ফাংশন (তবে নাম ছাড়াই) সংজ্ঞায়িত করে। এটি 4 বাইট সঞ্চয়!
norbjd

হ্যাঁ, নামহীন ফাংশনগুলির অনুমতি দেওয়া হয়েছে , তবে আপনার যদি পুনরাবৃত্ত কল বা এর মতো কিছু প্রয়োজন হয় না for
মার্টিন ইন্ডার

দুর্দান্ত, সম্পাদিত :)
Norbjd

2

জেলি , 12 বাইট

%ЀḊDFŒḂ
1ç#

কিভাবে?

1ç# - Main link: n
1   - initialise "i" at 1
  # - increment i and yield a list of the first n truthful results of:
 ç  -     last link (1) as a dyad

%ЀḊDFŒḂ - Link 1, test a value "i" for mod [2,n] being palindromic: i, n
 Ѐ      - for each, mapped over the right argument, i.e. for j = 1 to n:
%        -     i modulo j
   Ḋ     - dequeue, i.e. discard the modulo 1 result
    D    - convert to decimal list (vectorises)
     F   - flatten into one list
      ŒḂ - is palindromic?

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


1

সিজেম , 28 বাইট

0ri:N{{)_N),2>f%s_W%#}g_p}*;

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

ব্যাখ্যা

0          e# Push 0, the value we'll repeatedly increment to search for valid outputs.
ri:N       e# Read input, convert to integer, store in N.
{          e# Run this block N times...
  {        e#   Run this block until the condition is true, which will find the next
           e#   number with palindromic residues...
    )_     e#     Increment and duplicate.
    N),2>  e#     Push [2 3 ... N].
    f%     e#     Take the current value modulo each of these.
    s      e#     Flatten them into a single string.
    _W%    e#     Duplicate and reverse.
    #      e#     Try to find the reverse in the original. A common way to compute
           e#     "not equal" for strings of the same length.
  }g
  _p       e#   Print a copy of the result.
}*
;          e# Discard the final result to prevent printing it twice.

1

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

for(;$x<$a=$argn;$s="")for($i=1,++$n;$i++<$a;)if($i==$a&strrev($s.=$n%$i)==$s)echo$n._.!++$x;

অনলাইন সংস্করণ 2 স্ট্রিং হিসাবে আউটপুট লুপ

সম্প্রসারিত

for(;$x<$a=$argn;$s="") 
for($i=1,++$n;$i++<$a;)
    if($i==$a&strrev($s.=$n%$i)==$s)echo$n._.!++$x; 

পিএইচপি 130 বাইট

for(;count($r)<$a=$argn;$s=[])for($i=1,++$n;$i++<$a;){$s[]=$n%$i;if(count($s)==$a-1&strrev($j=join($s))==$j)$r[]=$n; }print_r($r);

অনলাইন সংস্করণ 2 লুপ

সম্প্রসারিত

for(;count($r)<$a=$argn;$s=[])
for($i=1,++$n;$i++<$a;){
    $s[]=$n%$i;
    if(count($s)==$a-1&strrev($j=join($s))==$j)$r[]=$n; 
}
print_r($r);

পিএইচপি, ১৩ লুপের সাথে 139 বাইটস

for($i=$n=1;count($r)<($a=$argn)&$i++<$a;){$s[]=$n%$i;if(count($s)==$a-1){if(strrev($j=join($s))==$j)$r[]=$n;$n++;$s=[];$i=1;}}print_r($r);

অনলাইন সংস্করণ 1 লুপ

সাথে চালাও

echo '<string>' | php -nR '<code>'

সম্প্রসারিত

for($i=$n=1;count($r)<($a=$argn)&$i++<$a;){
    $s[]=$n%$i;
    if(count($s)==$a-1){
        if(strrev($j=join($s))==$j)$r[]=$n;
        $n++;
        $s=[];
        $i=1;
    }
}
print_r($r);

1

কিউবিআইসি , 48 বাইট

:{A=G[2,a|A=A+!q%b$]~A=_fA||h=h+1?q]q=q+1~h=a|_X

বিটস ম্যাথমেটিকাকে! নমুনা রান:

Command line: 10
 1 
 280 
 281 
 560 
 1611 
 1890 
 1891 
 2170 
 2171 
 2241 

ব্যাখ্যা:

:{          Get 'a' from the command line, start an inf. loop
A=G         Clear out whatever's in A$
[2,a|       For each of the numbers we want to modulo
A=A+        Add to A$ 
     q%b       our current number MODULO te loop iterator
    !   $      cast to string
]           NEXT
~A=_fA|     If the string of remainders is a palindrome (_f ... | is Reverse())
|h=h+1      THEN h=h+1 (h starts at 0) - this counts how many hits we've had
 ?q            also, print the number with the palindromic remainder
]           END IF
q=q+1       Test the next number
~h=a|_X     If we've had 'a' hits, quit.
            The last IF and the infinite loop are closed implicitly.

1

জাপট , 26 বাইট

L³o fR{C=Uò2@R%Xì ¥CwÃj1U

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

এটি কোনও শর্তকে সন্তুষ্ট করে প্রথম এন নম্বর পেতে যদি কোনও বিল্ট-ইন থাকে তবে এটি যথেষ্ট সংক্ষিপ্ত হবে (এবং দ্রুত):

R{C=Uò2@R%Xì ¥Cw}aU
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.