ঘূর্ণমান প্রতিসাম্য সহ নম্বর


27

একটি পূর্ণসংখ্যা দেওয়া হয়, যদি এটি একই উত্সাহী (180 ° ঘোরানো) বা অন্যথায় মিথ্যা মান হয় তবে সত্যবাদী মানের আউটপুট দিন ।

0, 1এবং 8ঘূর্ণমান প্রতিসাম্য আছে। 6হয়ে ওঠে 9এবং বিপরীত হয়।

সত্যবাদী ফলাফল উত্পাদন করে এমন সংখ্যার ক্রম: OEIS A000787

0, 1, 8, 11, 69, 88, 96, 101, 111, 181, 609, 619, 689, 808, 818, 888, 906, 916, 986, 1001, 1111, 1691, 1881, 1961, 6009, 6119, 6699, 6889, 6969, 8008, 8118, 8698, 8888, 8968, 9006, 9116, 9696, 9886, 9966, 10001, 10101, 10801, 11011, 11111, 11811, 16091, ...

এই প্রশ্নের পোস্ট করার সময় আমার নিজের খ্যাতি দ্বারা অনুপ্রাণিত হয়: 6009


এটি মুদ্রণ রোটেশন-সুরক্ষিত সংখ্যার এক ধরণের মত দেখাচ্ছে ।
xnor

2
@ xnor তারা মোটেও এক নয়। এই প্রশ্নের সাথে জড়িত হওয়ার পরে নম্বরটি অন্য কোনও বৈধ সংখ্যা হয়ে উঠবে কিনা (এবং এটি আলাদা রাখার জন্য একটি সময় সংযোজন করা হবে) জড়িত, এটি একই সংখ্যা নয় কিনা invol আমার পোস্ট করার আগে আমি এই প্রশ্নটি দেখেছিলাম।
mbomb007

@ mbomb007 আমার ভুল আমি আবার খুললাম।
xnor

আমরা কি স্ট্রিং হিসাবে ইনপুট নিতে পারি?
xnor

@xnor যদি ভাষাটির সংখ্যাগত প্রকার থাকে তবে এটি ফাংশন পরামিতিগুলির জন্য তাদের ব্যবহার করা উচিত। উদাহরণস্বরূপ, পাইথনে যদি আপনি নেন raw_input, ব্যবহারকারী একটি পূর্ণসংখ্যা প্রবেশ করান, যা পর্দার আড়ালে একটি স্ট্রিং হয়ে যায়। সেটা ঠিক আছে.
mbomb007

উত্তর:


6

05 এ বি 1 , 22 16 15 14 বাইট

কোড:

Â23457ð«-69‡Q

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


পূর্ববর্তী কোড:

Â69‡Q¹¹„vd•ÃQ*

স্ট্রিংটি আবর্তিত প্রতিসাম্য কিনা তা নির্ধারণ করার জন্য, আমাদের কেবল প্রতিলিপি 69দিয়ে 96স্ট্রিংটি বিপরীত করতে হবে এবং সেগুলি সমান কিনা তা পরীক্ষা করতে হবে। অন্যান্য জিনিস আমরা জানতে হবে সংখ্যা শুধুমাত্র রয়েছে ডিজিটের 0, 1, 8, 6এবং 9। সুতরাং আমরা ঠিক তাই করতে যাচ্ছি:

                     # Bifurcate the input, which pushes input and input[::-1]
 69Â                  # Bifurcate 69, which pushes 69 and 96.
    ‡                 # Transliterate 69 with 96 in the input, e.g. 1299 becomes 1266.
     Q                # Check for equality.
      ¹¹              # Push input again twice.
        „vd•          # Compressed version for 10869.

„vd•অংশ আসলে স্ট্রিং পরিবর্তিত vdথেকে বেস 190 থেকে বেস 10 । আপনি এই চেষ্টা করে দেখতে পারেন এখানে

            Ã        # Keep the characters of the second string in the first string.
                       667788 would become 6688 (since 7 is not in 10869).
             Q       # Check for equality.
              *      # Multiply the top two numbers, which actually does an AND function.

ব্যবহার সিপি-1252 এনকোডিং। এটি অনলাইন চেষ্টা করুন!


10

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

lambda n:`n`==`map('01xxxx9x86'.find,`n`)`[-2::-3]

পদ্ধতিটি '01xxxx9x86'.findকোনও আপত্তিজনক সংখ্যার সাথে, এটি উল্টা-নাম্বার সংখ্যায় একটি অঙ্কের অক্ষর নেয় -1। এই ফাংশনটি বিপরীত সংখ্যা স্ট্রিংয়ের সাথে ম্যাপ করা হয়, অঙ্কের তালিকা তৈরি করে।

এটি [1::3]কৌতুকের সাথে একটি স্ট্রিংয়ে রূপান্তরিত হয় , পরিবর্তে এটি না করে উল্টানো হয় [-2::-3](এর জন্য ডেনিসকে ধন্যবাদ, 4 বাইট সংরক্ষণ করে), এবং মূল সংখ্যার স্ট্রিংয়ের সাথে তুলনা করা হয়। কোন -1unflippable ডিজিটের 's রূপান্তর বেঁকিয়ে বসানো হবে, এটি ব্যর্থ হয়।


56 বাইট:

lambda n:`n`[::-1]==`n`.translate('01xxxx9x86______'*16)

উল্লিখিত সংখ্যার স্ট্রিংটি উল্টো-ডাউন প্রতিস্থাপনের সাথে একই কিনা তা পরীক্ষা করে। যে অঙ্কগুলি উল্টানো যায় না সেগুলি 'x'সর্বদা ভুল উত্তর দেওয়ার জন্য প্রতিস্থাপন করা হয়।

প্রতিস্থাপনটি translate256 অক্ষরের স্ট্রিংয়ের সাথে সম্পন্ন হয় , সংশ্লিষ্ট ASCII মানগুলি প্রতিস্থাপন করে। মাত্র 10 মান 48করার 57ব্যাপার, কিন্তু আমি দৈর্ঘ্য 16 padded মোট দৈর্ঘ্য 256. আমি আশ্চর্য হতে আছে কিনা একটি সংক্ষিপ্ত পথ পরিষ্কার করা হয়।

কিছু অন্যান্য পদ্ধতি (দৈর্ঘ্য 59, 60, 60):

lambda n:set(zip(`n`,`n`[::-1]))<=set(zip('01896','01869'))
r=lambda s:set(zip(s,s[::-1]));lambda n:r(`n`)<=r('9018106')
lambda n:all(a+b in'001188969'for a,b in zip(`n`,`n`[::-1]))

হতে পারে এটি সাহায্য করবে: কোড golf.stackexchange.com/a/48994/34718
mbomb007

6

রুবি, 54 46 বাইট

 ->a{(b=a.to_s).tr('1-9','1w-z9x86').reverse==b}

আমি জানি না, এর মতো বেনাম ফাংশনগুলি অনুমোদিত বা না

পাইথন 2 উত্তর হিসাবে মূলত একই ধারণা। যদি ইনপুটটি পূর্ণসংখ্যা না হয় abaতবে খারাপ কাজ করুন (যেমন দেয় true)


1
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! চমৎকার প্রথম উত্তর: ডি বেনামে ফাংশনগুলি এমন কোনও প্রসঙ্গে অনুমোদিত যেখানে সাধারণ নামযুক্ত ফাংশন অনুমোদিত।
বিড়াল 0


4

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

n=>n==[...''+n].reverse().map(c=>'0100009086'[c]).join``

অ্যারেতে ... কী করে?
ericw31415

@ ericw31415 এক্ষেত্রে এটি স্ট্রিংটিকে অক্ষরের অ্যারে পরিণত করে। আরও সাধারণভাবে, আপনি পুনরাবৃত্তযোগ্য কিছু সরবরাহ করতে পারেন এবং এটি এটিকে পুনরাবৃত্তি করবে এবং অ্যারের উপাদানগুলিকে অন্তর্ভুক্ত করবে।
নীল

সুতরাং [... '' + এন] মূলত এন.স্প্লিট ("") এর মতো একই জিনিস? আমি এই সম্পর্কে আরও কোথায় পড়তে পারি?
ericw31415

@ ericw31415 হ্যাঁ, এই ক্ষেত্রে আমি এটির জন্য শর্টহ্যান্ড হিসাবে ব্যবহার করি split``। দেখুন একটি আরো শক্তিশালী অ্যারের আক্ষরিক
নিল

2

পার্ল, 29 26 বাইট

এর জন্য +1 অন্তর্ভুক্ত -p

এসটিডিআইএন ইনপুট দিয়ে চালান:

rotation.pl <<< 69

rotation.pl:

#!/usr/bin/perl -p
$_=reverse==y/962-7/69a/r

2

জেলি, 16 15 বাইট

,ȷ9+90860¤Dị/⁼Ṛ

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

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

,ȷ9+90860¤Dị/⁼Ṛ  Main link. Argument: n (integer)

         ¤       Evaluate the three links to the left as a niladic chain:
 ȷ9              Yield 1000000000.
    90860        Yield 90860.
   +             Add to yield 1000090860.
,                Pair; yield [n, 1000090860].
          D      Convert both integers to base 10.
           ị/    Reduce by index, i.e., for each digit of n, retrieve the element
                 of [1, 0, 0, 0, 0, 9, 0, 8, 6, 0] at that index (1-based).
              Ṛ  Yield the digits of n in reversed order.
             ⁼   Test for equality.

এই উত্তরটি অন্য 15 টি বাইটে বেঁধে দেওয়া হয়েছে, তবে অন্য উত্তরটি আগে পোস্ট করা হয়েছিল। আপনি কি 1 বাইট শেভ করতে পারেন?
mbomb007

আমি বেশ চেষ্টা করেছি; আমার মনে হয় না আমি পারব। যাইহোক, আমাদের ডিফল্ট টাই ব্রেকারটি বিজয়ী স্কোর অর্জনের জন্য প্রথম উত্তর এবং আমার মনে হয় আমি প্রথম 15 এ পৌঁছেছি।
ডেনিস

2

রেটিনা, 57 49 বাইট

8 মার্টিন বাটনারকে ধন্যবাদ 8 টি সংরক্ষণ করা হয়েছে ।

+`^(([018])(.*)\2|9(.*)6|6(.*)9)$
$3$4$5
^[018]?$
  • হ্রাস যেমন প্রয়োগ করুন: 1610880191-> 61088019-> 108801-> 0880-> 88-> (খালি)।
  • রিটার্নস 1যদি শুধু 0, 1, 8, অথবা (খালি) ছেড়ে দেওয়া হয়।
  • রিটার্নস 0অন্যথায়।

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


2

sh, 40 33 বাইট

[ `rev<<<$1|tr 6923457 96` = $1 ]

কমান্ড লাইন আর্গুমেন্টের মাধ্যমে ইনপুট, প্রস্থান কোডের মাধ্যমে আউটপুট। সমস্ত টেস্টকেস তৈরি করুন:

for i in `seq 0 10000`
do
  if [ `rev<<<$i|tr 6923457 96` = $i ]
  then
    echo $i
  fi
done

2

টিএসকিউএল, 122 বাইট

আমি কোড গল্ফে নতুন, তাই কীভাবে অক্ষরগুলি গণনা করা যায় তা সম্পর্কে নিশ্চিত নয়। এখানে এক হিসাবে এটি গণনা করা হচ্ছে যেহেতু এই ক্ষেত্রে ব্যবহৃত সংখ্যা 8

বিপরীত মান মেলে এবং এটি যখন মেলে না তখন কিছুই ফিরে আসবে:

SELECT 1FROM(values(8))x(x)WHERE(x)NOT like'%[23457]%'and REPLACE(REPLACE(x,6,4),9,6)=REVERSE(REPLACE(REPLACE(x,9,4),9,6))

মানব পাঠযোগ্য:

SELECT 1
FROM
  (values(808))x(x)
WHERE(x)
  NOT like'%[23457]%'
  and REPLACE(REPLACE(x,6,4),9,6)=REVERSE(REPLACE(REPLACE(x,9,4),9,6))

2

রেটিনা , 40 38 33 বাইট

$
;$_
T`92-7`69`;.+
+`(.);\1
;
^;

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

ব্যাখ্যা

এটি অন্যান্য রেটিনা উত্তর থেকে সম্পূর্ণ ভিন্ন পদ্ধতির ব্যবহার করে। সমস্ত প্রতিসাম্য অংশ অপসারণের পরিবর্তে, আমরা কেবল স্ট্রিং এবং অদলবদল 6এবং 9গুলি এর বিবর্তনের রূপান্তর সম্পাদন করি এবং তারপরে সাম্যের জন্য তুলনা করি। কোনও অ-প্রতিসাম্য সংখ্যার উপস্থিতি 9না ঘটে তা নিশ্চিত করার জন্য আমরা সেগুলি একটি অর্ধের মধ্যে সেগুলিতেও পরিণত করি ।

$
;$_

স্ট্রিংয়ের শেষের সাথে মিল রেখে এবং ;সম্পূর্ণ ইনপুটটি প্রবেশ করিয়ে আমরা ইনপুটটিকে নকল করি ।

T`92-7`69`;.+

এটি কেবল দ্বিতীয় অর্ধের সাথে এটির সাথে মিল রেখে অক্ষর লিখিত লিখিতকরণ সম্পাদন করে ;.+। দুটি লিপ্যন্তর সেটটি এতে প্রসারিত:

9234567
6999999

কারণ 2-7একটি ব্যাপ্তি নির্দেশ করে এবং উত্স সেটের দৈর্ঘ্যের সাথে মিলের জন্য লক্ষ্য সেটটি শেষ অক্ষরের সাথে প্যাড করে। তাই, পর্যায় অদলবদল 6এবং 9এবং সব সক্রিয় 23457মধ্যে 9গুলি।

+`(.);\1
;

বারবার ( +) চারপাশে অভিন্ন অক্ষরের একজোড়া সরান ;। এটি হয় কেবলমাত্র অবধি অবধি অবধি চলতে থাকবে ;বা যতক্ষণ না চারপাশের দুটি অক্ষর ;আর অভিন্ন না থাকে, যার অর্থ এই হবে যে স্ট্রিংগুলি একে অপরের বিপরীত নয়।

^;

প্রথম অক্ষরটি ;মুদ্রণযোগ্য 0বা সে 1অনুযায়ী প্রিন্ট হয় কিনা তা পরীক্ষা করে দেখুন ।


লিভার, খুব লিভার
ক্যালকুলেটরফলাইন


1

পাইথ, 17 বাইট

!-FmC_B`d,QC\􄽥

পাইথ কম্পাইলারের মধ্যে এটি পরীক্ষা করুন ।

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

!-FmC_B`d,QC\􄽥  (implicit) Store the input in Q.

            \􄽥  Yield the Unicode character with code point 1068901.
           C    Compute its code point.
         ,Q     Pair the input and 1068901.
   m            Map; for each d in [Q, 1068901]:
       `d         Yield the string representation of d.
     _B           Yield the pair of `d` and `d` reversed.
    C             Zip. For the second string, this gives
                  ['11', '00', '69', '88', '96', '00', '11'].
 -F             Fold by difference, i.e., removes all pairs in the second list
                from the first list.
!               Logically negate the result, returning True iff the list is empty.

1

অ্যাপ্লিকেশনগুলির জন্য ভিজ্যুয়াল বেসিক, 150 111 বাইট

কনসোলে বা ইউডিএফ হিসাবে ব্যবহারযোগ্য।

Function c(b)
c=(Not b Like"*[!01869]*")And b=Replace(Replace(Replace(StrReverse(b),9,7),6,9),7,6)
End Function

অন্তর্নিহিত ধরণের রূপান্তরগুলির সুবিধা নিয়ে এবং সমীকরণের প্রতিটি পাশের দুটি ধাপের পরিবর্তে তিনটি পদক্ষেপ অদলবদল করে উন্নত। গণনা অন্তর্ভুক্ত Functionএবং End Functionবিবৃতি।


1

জিএনইউ সেড, ৮৪ বাইট

( -rপতাকার জন্য +1 সহ )

:
s/^6(.*)9$/\1/
s/^9(.*)6$/\1/
s/^([081])(.*)\1$/\2/
t
s/^[081]$//
s/.+/0/
s/^$/1/

যদি লাইনটি এর শুরু অক্ষরের ঘূর্ণন দিয়ে শেষ হয় তবে উভয় প্রান্তটি একে একে ট্রিম করুন। কোনও মিল না হওয়া পর্যন্ত পুনরাবৃত্তি করুন। একটি একক প্রতিসম চরিত্রের জন্য অ্যাকাউন্ট, তারপরে যদি কিছু থেকে যায় তবে ইনপুটটি প্রতিসাম্য ছিল না, এবং আমরা মিথ্যা ফিরি; অন্যথায় সত্য ফিরে।


1

সি, 82 বাইট

char*s="0100009086";f(x){int y=0,z=x;for(;x;x/=10)y=y*10+s[x%10]-'0';return z==y;}

সম্প্রসারিত

char *s = "0100009086";
int f(int x)
{
    int y=0, z=x;
    for(; x; x/=10)
        y = y*10 + s[x%10]-'0';
    return z==y;
}

ব্যাখ্যা

আমরা xমডুলো -10 গাণিতিক ব্যবহারের অঙ্কগুলি বিপরীত করি , 6 and এবং 9 এর প্রতিস্থাপনের পরিবর্তে আমরা যাই we আমরা জেরো দ্বারা আবর্তনমূলক-অসমমিতিক অঙ্কগুলি প্রতিস্থাপন করি (নোট করুন যে আমরা প্রতিস্থাপনের টেবিলটি কেবল পরিবর্তন করে প্রতিসামান্য পাঁচটি এবং / অথবা দ্বিগুণ পরিচালনা করতে পারি s)। যদি নতুন সংখ্যাটি মূল ('জেড' তে সংরক্ষিত) এর সমান হয়, তবে এটি ঘোরানুগতভাবে প্রতিসম হয়।

পরীক্ষা প্রোগ্রাম

#include <stdio.h>
int main()
{
    int i;
    for(i=0;  i <= 16091; ++i)
        if (f(i))
            printf("%d\n", i);
}

এটি প্রশ্নের মধ্যে দেওয়া প্রতিসম সংখ্যার তালিকা মুদ্রণ করে।


0

এমএটিএল, 25 21 22 বাইট

j69801VmAGtP69VtPXE=vA

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

ব্যাখ্যা

j       % Explicitly grab input as string
69801   % Number literal
V       % Convert to a string
mA      % Check if all input chars are members of this list
G       % Explicitly grab the input
tP      % Duplicate and flip it
69      % Number literal
V       % Convert to string ('69')
tP      % Duplicate and flip it ('96')
XE      % Replace all '6' with '9', and '9' with '6'
=       % Check that this substituted string is equal to the original
v       % Vertically concatenate all items on the stack
A       % Ensure everything is true
        % Implicitly print boolean result

0

গুরুতরভাবে, 23 বাইট

,$;`"01xxxx9x86"í`MRεj=

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

এটি মূলত xnor এর পাইথন 2 সমাধানের একটি বন্দর ।

ব্যাখ্যা:

,$;`"01xxxx9x86"í`MRεj=
,$;                      push two copies of str(input)
   `"01xxxx9x86"í`M      map: get each digit's rotated digit (or x if not rotatable)
                   Rεj   reverse and join on empty string to make a string
                      =  compare equality with original input

0

কোটলিন, 69 বাইট

এটি সংখ্যাটি নেয়, এটিকে একটি স্ট্রিতে রূপান্তর করে, আবর্তিত করে এবং তারপরে সাম্যের জন্য একটি স্ট্রিং হিসাবে এটি মূলটির সাথে তুলনা করে। অ-আবর্তনযোগ্য অংকগুলি কেবল রূপান্তরিত হয়0

{i->"$i".map{"0100009086"[it-'0']}.joinToString("").reversed()=="$i"}

এটি এখানে পরীক্ষা!

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