রোটেশন-নিরাপদ নম্বর মুদ্রণ করুন


29

পটভূমি

আপনি কিছু বোর্ড-গেম প্রস্তুতকারকের জন্য কাজ করছেন এবং কিছু গেমের জন্য তাদের উপর খোদাই করা 0 থেকে n পর্যন্ত সংখ্যা সহ কাঠের টাইলস তৈরি করতে হবে । তবে, আরও অগ্রগতি ব্যতীত কিছু টাইল পৃথক পৃথক হয়ে উঠবে, যেমন, 6এবং 9। এটি এড়ানোর জন্য, আপনাকে এমন সংখ্যা সজ্জিত করতে হবে যা অন্যদের (এবং কেবলমাত্র) বিভ্রান্তিমূলক বিন্দুর সাথে বিভ্রান্ত হতে পারে, যেমন, আপনার মতো টাইলস থাকবে 9.বা 6089.

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

আসল কাজ

সংক্ষিপ্ততম প্রোগ্রামটি লিখুন যে:

  • ইনপুট হিসাবে ধনাত্মক পূর্ণসংখ্যা n নেয় । কীভাবে ইনপুটটি পঠিত তা আপনার উপর নির্ভর করে।
  • আপনার পছন্দের ক্রমে 0 থেকে n (0 এবং n অন্তর্ভুক্ত) এর প্রতিটি সংখ্যা মুদ্রণ করুন , একক সাদা স্থানের অক্ষর দ্বারা পৃথক (নিউলাইন সহ)। শীর্ষস্থানীয় শূন্যগুলি ছাড়াই সংখ্যাগুলি মুদ্রিত করতে হবে।
  • প্রতিটি সংখ্যায় একটি বিন্দু (।) যুক্ত করে যা অন্যটিতে পরিণত হয়, valid (180 °) দ্বারা আবর্তনের পরে বৈধ সংখ্যা, এমনকি যদি এই সংখ্যাটি n এর চেয়ে বড় হয় আপনার টাইপফেসের 0 এবং 8 টি ঘূর্ণন-প্রতিসাম্য এবং 9 টি একটি ঘোরানো 6 The এবং 2 ঘূর্ণনের উপর পৃথক; 1 টি আবর্তন-প্রতিসাম্য নয়। শীর্ষস্থানীয় শূন্যগুলির সাথে নম্বরগুলি বৈধ নয়।

উদাহরণ

নিম্নলিখিত নম্বরগুলির প্রতিটি ঠিক এভাবে মুদ্রণ করতে হবে:

  • 2
  • 4
  • 5
  • 6.
  • 8
  • 9.
  • 16
  • 60
  • 66.
  • 68.
  • 69
  • 906
  • 909.
  • 8088.
  • 9806.
  • 9886
  • 9889.

না করা উচিত 60হবে 60.?
লাল-এক্স

2
@ red-X "শীর্ষস্থানীয় জিরো সহ নম্বরগুলি বৈধ নয়" "
Sp3000

2
@ ইরানালিস: এটির জন্য একটি মানক লুফোল রয়েছে । (এছাড়াও, এটি থিমেটিকভাবে বোঝা যায় না, যেহেতু আপনাকে সেই মেশিনটি সেই ভাষা শেখাতে হবে)) যাইহোক, আমি একটি বিদ্যমান
Wrzlprmft

2
@ ইরানালিস সাধারণত যা হয় তা হ'ল চ্যালেঞ্জ পোস্ট করার পূর্বে বিদ্যমান ভাষার সংস্করণগুলি বিজয়ী প্রোগ্রাম হওয়ার যোগ্য। এর পরে তৈরি সংস্করণগুলি এখনও মজাদার জন্য পোস্ট করতে পারে তবে তাদের পোস্টে উল্লেখ করা উচিত যে তারা বিতর্ক করছে না। সুতরাং হ্যাঁ আপনি এই জাতীয় ভাষার সংজ্ঞা দিতে পারেন , তবে এটি অযোগ্য হবেন এবং সম্ভবত সম্ভবত একটি স্ট্যান্ডার্ড লুফোলের কারণে (উপরে হিসাবে) ভালভাবে গৃহীত হয়নি।
Sp3000

3
আমি মনে করি 8088.আপনার উদাহরণগুলিতে একটি ঘূর্ণন-অনিরাপদ সংখ্যা হিসাবে অন্তর্ভুক্ত করা সহায়ক হবে যা 6 বা 9 নয়
এলএন্ডিয়া স্টারম্যান

উত্তর:


6

পাইথ - 34 38

VhQJ`N+J*\.&nJX_J`69`96&eN!-J"0689

আমাকে 4 স্পট অপসারণ করতে সাহায্য করার জন্য @ স্প3000 কে অবশ্যই ধন্যবাদ জানাতে হবে। আমার কাছে প্রাথমিকভাবে একটি অতিরিক্ত চেক ছিল &@JKযা নিশ্চিত করেছে যে সংখ্যায় 6 বা 9 রয়েছে, তবে পোস্টগুলি দেওয়ার আগে উত্তরগুলি বোধ করার পরে আমি তার উত্তরটি পড়েছি এবং লক্ষ্য করেছি যে আমার অভিন্ন অনুবাদ এবং বিপরীতটি ইতিমধ্যে এটি যত্ন নিয়েছে।

এছাড়াও স্ট্রিংগুলি পুনরাবৃত্তিযোগ্য তা নির্দেশ করার জন্য @ আইসএইচজি ধন্যবাদ জানায় এবং আপনি সেগুলি সেট অপারেশন ব্যবহার করতে পারেন। বর্তমান কোড তৈরির জন্যও;)

ব্যাখ্যা:

                                    : (implicit) Q=eval(input())
VhQ                                 : for N in range(Q+1):
   J`N                              : J=str(N)
      +J*\.                         : J + "." * ...
           &nJX_J`69`96             : J!=translate(reversed(J),"69","96") and...
                       &eN          : N%10 and...
                          !-J"0689  : not(setwise_difference(J, "0689"))

আমি মনে করি না Kএবং এর জন্য আপনার Jকেবল পূর্ণসংখ্যার তালিকা ব্যবহার করা দরকার এবং এর পরিবর্তে কেবল স্ট্রিং ব্যবহার করুন। K<ব্যাকটিক> 69 এ স্যুইচ করা এবং J<বিটিক> এন এ কয়েকটি অক্ষর সংরক্ষণ করে যেমন Kফলাফল প্রোগ্রামটিতে অন্তর্ভুক্ত থাকে। সবচেয়ে কম বয়সে আমি সেই কৌশলটির মধ্যে পেতে পারি VhQJ``N+J*\.&nJX_J``69``96&eN!-J"0689, 34 টি অক্ষর। (দুটি ব্যাকটিকস সত্যিই একটি))
ইসাএইচজি

টিপসের জন্য ধন্যবাদ আমি মনে করি যে কোনও কারণে আমি ভুলে গেছি যে numbers ব্যবহার করে সংখ্যার একটি স্ট্রিং তৈরি করা সত্যই সংক্ষিপ্ত ছিল ` যাইহোক, আপনি ব্যাকটিক্স সহ \ দিয়ে পালিয়ে একটি কোড ব্লক লিখতে পারেন \ উদাহরণস্বরূপ:hell`o wo`rld
FryAmTheEggman

ব্যাখ্যায়, আপনার _আগে একটি অতিরিক্ত আছে বলে মনে হচ্ছে `96
isaacg

@ আইসাক ধন্যবাদ, স্থির
FryAmTheEggman

10

সিজেম, 46 44 43 42 বাইট

l~),{_A%g1$s_6890s-!\_69s_W%erW%=!&&'.*N}/

আমি মনে করি উন্নতির কিছু জায়গা আছে।

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

ব্যাখ্যা

l~),{_A%g1$s_6890s-!\_69s_W%erW%=!&&'.*N}/
l~                                         "Read an eval input.";
  ),                                       "Get range from 0 to n.";
    {                                   }/ "For each...";
     _                                     "Get a copy of the integer.";
      A%g                                  "Ends with digit other than 0?";
         1$s_                              "Get another copy, convert to string, get a copy.";
             0689s-!                       "Contains rotation-safe digits?";
                    \                      "Swap with other copy.";
                     _                     "Get another copy.";
                      69s_W%er             "Swap 6 and 9.";
                              W%           "Reverse.";
                                =!         "Is different from original?";
                                  &&       "AND all three conditions.";
                                    '.*    "If true, push a period (else, an empty string).";
                                       N   "Push a newline.";

ইনপুট 8 হলে এই কী ফিরে আসবে? (আমি কোডটি ইনপুটে পেস্ট করেছি এবং তারপরে রান বোতামে ক্লিক করেছি, তবে একটি ত্রুটি বলা হয়েছিল))
ডেভিডসি

@ ডেভিডকারারহর কোডটি "কোড" এবং ইনপুটটিতে রেখেছেন n
মার্টিন এন্ডার

ইনপুট 98, আপনার প্রোগ্রামটি 66 এর পাশে একটি বিন্দু রাখে, যা ভুল।
স্পার

3
@ স্পার আপনার উত্তরটি অবৈধ বলে বলার আগে আপনার প্রশ্নের উত্তর দেওয়ার জন্য অপির অপেক্ষা করা উচিত। তাঁর বক্তব্য: "নিম্নলিখিত সংখ্যার প্রত্যেকটি ঠিক এভাবেই ছাপতে হবে" আপনার ব্যাখ্যার বিরোধিতা করে বলে মনে হচ্ছে।
FryAmTheEggman

আমি সিজেএম ব্যাখ্যার সৌন্দর্য পছন্দ করি।
nyuszika7h


5

এপিএল 66

∊' ',¨{a←⌽'0.....9.86'[⎕D⍳b←⍕⍵]⋄'.'∊a:b⋄('0'=⊃a)∨⍵=⍎a:b⋄b,'.'}¨0,⍳

ব্যাখ্যা:

¨0,⍳           applies the function to each number 0-n
a←⌽'0.....9.86'[⎕D⍳b←⍕⍵] inverts 6s and 9s, leaving 8s and 0s, and replacing other numbers with dots. Reverses vector after substitution.
'.'∊a          if there is a dot in the number....
('0'=⊃a)       .. or if the number starts with 0...
⍵=⍎a           or if the (inverted) number is the same as original
:b             then print the original number
b,'.'          else print a dot in the end
∊' ',¨        Finally to give the result in the asked format i add a single space after each result and join them all 

এটি ব্যবহার করে দেখুন tryapl.org

নোট করুন যে অনলাইন দোভাষীতে ⍎ ফাংশনটি কাজ করে না তাই আমাকে এটির 2⊃⎕ ভিএফআইয়ের সাথে প্রতিস্থাপন করতে হয়েছিল যা এই ক্ষেত্রে একই কাজ করে, একটি স্ট্রিং দিয়ে নম্বরটি কার্যকর করে এবং ফিরিয়ে দেয়।


দেখতে দেখতে ভুল: 60, 69, 90, এবং 96 এর বিন্দু থাকতে হবে না।
এনজিএন

ধন্যবাদ @ জিএন, আমি এটিকে সংশোধন করেছি, আমি মনে করি এটি এখন সঠিকভাবে কাজ করে।
মরিস জুচ্চা

2
ভাল হয়েছে :) এর পরিবর্তে ⊃,/বা ,/আপনি সামনের দিকে একটি ব্যবহার করতে পারেন ।
ngn

হ্যাঁ সঠিক! আমি সাধারণত এমএল 1 তে কাজ করি না তাই আমি about এর কথা ভুলে যাই ∊
মরিস জুকা

4

পার্ল 5, 53 বাইট

say$_,"."x(!/[1-57]|0$/&&reverse!=y/96/69/r)for 0..<>

অনলাইন ডেমো

পার্ল 5.10+ sayবৈশিষ্ট্যটি ব্যবহার করে , তাই এটি সক্ষম করতে perl -M5.010(বা perl -E) দিয়ে চালানো দরকার । ( এই মেটা থ্রেডটি দেখুন )) স্টিডিন থেকে স্ট্যান্ডআউট প্রিন্ট করে input


4

পাইথন 2, 130 116 113 বাইট

def f(n):S=`n`;n and f(n-1);print S+"."*all([n%10,set(S)<=set("0689"),(u""+S[::-1]).translate({54:57,57:54})!=S])

একটি ক্রিয়াকলাপ সংজ্ঞায়িত করে fযা নম্বরগুলি STDOUT এ প্রিন্ট করে, আরোহণের ক্রমে।

এবার আমি ভেবেছিলাম আমি @ ফেয়ারসামের বইয়ের সাথে একটি পাতা বের করব .translate:)

সম্প্রসারিত:

def f(n):
 S=`n`        
 n and f(n-1)                                      # Recurse if not 0                                     
 print S+"."*all([n%10,                            # Not divisible by 10
                  set(S)<=set("0689"),             # Consists of 0689
                  (u""+S[::-1]).translate
                  ({54:57,57:54})!=S])             # When rotated is not itself

পূর্ববর্তী সমাধান:

def f(n):S=`n`;print S+"."*all([n%10,set(S)<=set("0689"),eval("S[::-1]"+".replace('%s','%s')"*3%tuple("6a96a9"))!=S]);n and f(n-1)

কিছুক্ষণ .replaceআগে আমাকে কৌশলটি দেখানোর জন্য @ এক্সনরকে ধন্যবাদ জানাই Thanks


আপনি (u''+S[::-1])পরিবর্তে ব্যবহার করতে পারেন unicode(S[::-1])। এছাড়াও, আপনি যদি printএবং পুনরাবৃত্ত কলটি অদলবদল করেন , সংখ্যা ক্রমবর্ধমান ক্রমে বেরিয়ে আসবে।
এনজিএন

@ জিএন আহ ধন্যবাদ, আমি ভাবিনি u""+যে আসলে কাজ করবে
Sp3000

দেখুন আমি মনে করি এটি আরও ছোট হওয়া উচিত, উদাহরণস্বরূপ এটি আপনার দোষ নয় যে প্রিন্টটি যথাযথভাবে প্রিন্ট করা হয়, "পি" বলে না, তবে আপনি যদি "পি = মুদ্রণ" লিখতেন এবং আপনার "অফিসিয়াল" জমা দেওয়ার ক্ষেত্রে বাইট হিসাবে গণনা না করেন ছোট কর!
অ্যালেক টেলি

4

সি #, 343 309 টি অক্ষর

উপায় খুব দীর্ঘ, তবে যাইহোক:

namespace System.Linq{class C{static void Main(){int n=int.Parse(Console.ReadLine());for(int i=0;i<=n;i++){var b=i+"";var c=b.Replace("6","9");Console.Write(b+(b.All(x=>x=='0'|x=='8'|x=='6'|x=='9')&!b.EndsWith("0")&!(b.Count(x=>x=='6')==b.Count(x=>x=='9')&new String(c.Reverse().ToArray())==c)?". ":" "));}}}}

এটা কিভাবে কাজ করে? সংখ্যায় একটি সময়কাল যুক্ত করতে, এটি অবশ্যই নিম্নলিখিত প্রয়োজনীয়তার সাথে মেলে:

  • শুধুমাত্র নিয়ে গঠিত 0, 8, 6এবং 9
  • একটি শূন্য দিয়ে শেষ হয় না।
  • আপনি যখন এটি ঘোরান তখন একই সংখ্যা নয়:
    • যদি কোনও সংখ্যার সমান পরিমাণ 6গুলি এবং 9গুলি থাকে এবং
    • যদি c= সমস্ত 6s এর সাথে 9গুলি এর সাথে প্রতিস্থাপন করে ,
    • এবং বিপরীত c== c,
    • তারপরে: ঘোরানো সংখ্যাটি নিজেই সংখ্যার মতো।

সংখ্যাগুলি একটি স্পেস দ্বারা পৃথক করা হয়।

ইনডেন্টেশন সহ কোড:

namespace System.Linq
{
    class C
    {
        static void Main()
        {
            int n = int.Parse(Console.ReadLine());
            for (int i = 0; i <= n; i++)
            {
                var b = i + "";
                var c = b.Replace("6", "9");
                Console.Write(b +
                    (b.All(x => x == '0' | x == '8' | x == '6' | x == '9') &
                    !b.EndsWith("0") &
                    !(b.Count(x => x == '6') == b.Count(x => x == '9') &
                    new String(c.Reverse().ToArray()) == c) ? ". " : " "));
            }
        }
    }
}

1
আমার উত্তরটি দীর্ঘতর;) আমি গল্ফ কোর্সে বোলিং করতে দেখি।
ডিজিটাল ট্রমা

1
8808 সম্পর্কে কি? এটির কোনও 6s বা 9s নেই, তবে ঘোরানোর সময় এটি 8088।
এল'েন্ডিয়া স্টারম্যান

1
@ এল'ইনিয়া স্টারম্যান অনেক ধন্যবাদ! আমার জমা ফিক্স করার সময়, আমি আসলে অক্ষরগুলি সংরক্ষণ করেছি :)
প্রোগ্রামফক্স

4

এম (এমএমএমএস) - 72 70

R n F i=0:1:n W !,i S r=$TR($RE(i),69,96) W:r=+r*r'=i*'$TR(i,0689) "."

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

READ n- কীবোর্ড থেকে একটি স্ট্রিং পড়ুন এবং এটি স্টোর করুন n

FOR i=0:1:n- শূন্য থেকে লুপ n, iপ্রতিবার 1 দ্বারা বাড়ানো । (লাইনের বাকী অংশটি লুপের মূল অংশ গঠন করে))

WRITE !,i- এর মান অনুসারে একটি নতুন লাইন মুদ্রণ করুন i

SET r=$TRANSLATE($REVERSE(i),69,96))- বিপরীত করুন i, ছক্কা এবং ছক্কার সাহায্যে নাইনগুলি নাইন দিয়ে প্রতিস্থাপন করুন এবং এটিতে সংরক্ষণ করুন r

WRITE:r=+r*r'=i*'$TRANSLATE(i,0689) "."

  • :- একটি পোস্টকন্ডিশনাল এক্সপ্রেশন WRITEবোঝায় , সুতরাং কমান্ডটি কেবল তখনই কার্যকর করা হয় যদি r=+r*r'=i*'$TRANSLATE(i,0689)সত্যবাদী মানকে মূল্যায়ন করা হয়।
  • r=+r- যা rশুরুর শূন্য নেই তা পরীক্ষা করুন have অ্যানারি +অপারেটর একটি স্ট্রিংকে একটি সংখ্যায় রূপান্তর করে, যা যদি কোনও থাকে তবে নেতৃস্থানীয় শূন্যগুলি সরিয়ে দেয়।
  • *- গুণক অপারেটর। এম এর কোনও ক্রিয়াকলাপ নেই; সমস্ত বাইনারি অপারেটরগুলি বাম থেকে ডানে প্রদর্শিত ক্রমে মূল্যায়ন করা হয়।
  • r'=i- iএটি উল্টানো সংস্করণ হিসাবে একই নয় তা পরীক্ষা করুন r
  • '$TRANSLATE(i,0689)- সমস্ত জিরো, ছক্কা, আট এবং নাইনগুলি সরিয়ে ফেলুন iএবং পরীক্ষা করুন যে কিছুই নেই nothing ( 'এটি লজিকাল নেগেটিশন অপারেটর))
  • "."- অবশেষে WRITEকমান্ডের আর্গুমেন্ট (একটি আক্ষরিক স্ট্রিং)।

সম্পাদনা: গুণ গুণক অপারেটরটিকে গালি দিয়ে এটিকে আরও খাটো করুন। পূর্ববর্তী সংস্করণ:

R n F i=0:1:n W !,i S r=$TR($RE(i),69,96) I '$TR(i,0689),i'=r,r=+r W "."

3

এপিএল, 53 টি অক্ষর

∊{⍵,'. '↓⍨∨/(3≡⊃i)(5∊i),⍵≡'9608x'[i←⌽'6908'⍳⍵]}∘⍕¨0,⍳

0,⍳N        numbers 0..N
{...}∘⍕¨    format each number as a string and do the thing in curly braces
                inside the braces ⍵ is the current string
'6908'⍳⍵    encode '6' as 1, '9' as 2, '0' as 3, '8' as 4, and all others as 5
⌽           reverse
'9608x'[A]  use each element of A as an index in '9608x':
                effectively: swap '9'←→'6', preserve '08', mask other digits
⍵≡          does it match the original string?
                this is the first boolean condition, two more to come
5∊i         did we have a digit other than '0689'?
3≡⊃i        is the first of i (that is, the last of ⍵) a '0' (encoded as 3)?
∨/          disjunction ("or") over the three conditions, returns 0 or 1
'. '↓⍨      drop 0 or 1 elements from the beginning of the string '. '
⍵,          prepend ⍵
∊           flatten the results to obtain a single output string

3

সি # 205 209

সি #
আমার জাভাস্ক্রিপ্ট উত্তরের একটি বন্দর ... আরও কম বেশি দীর্ঘ হতে হবে না

class P{static void Main(string[]a){for(int n=int.Parse(a[0]);n>=0;--n){string p="",u=n+p;int e=n%10;foreach(var d in u)p=(d<56?d!=54?d>48?e=0:0:9:120-d-d)+p;System.Console.WriteLine(e!=0&p!=u?u+".":u);}}}

Ungolfed

class P 
{
    static void Main(string[] a)
    {
        for (int n = int.Parse(a[0]); n >= 0; --n)
        {
            string p = "", u = n + p;
            int e = n % 10;
            foreach (var d in u) p = (d < 56 ? d != 54 ? d > 48 ? e = 0 : 0 : 9 : 120 - d - d) + p;
            System.Console.WriteLine(e != 0 & p != u ? u + "." : u);
        }
    }
}

2

রুবি, ৮১

?0.upto(*$*){|x|puts x.reverse.tr('69','96')!=x&&x=~/^[0689]+$/&&/0$/!~x ?x+?.:x}

কমান্ড লাইন থেকে ইনপুট নেওয়া হয়।

Stringথেকে একটি তালিকা তৈরি 0করে n। এটি তাদের ট্রুপ লুপ করে এবং মুদ্রণ করে। সমস্ত শর্ত সন্তুষ্ট হলে এটি একটি বিন্দুকে সংযোজন করে:

  • সংখ্যা reversing এবং প্রতিস্থাপন 6সঙ্গে গুলি 9গুলি মূল দেয় না
  • সংখ্যা শুধুমাত্র সংখ্যা নিয়ে গঠিত 0, 6, 8এবং9
  • সংখ্যাটি শেষ হয় না 0

2

জাভাস্ক্রিপ্ট (ES6) 101 104 106 109

কনসোল.লগের মাধ্যমে এন হিসাবে একটি ফাংশন, কনসোল.লগের মাধ্যমে আউটপুট % 10 ব্যবহার করে
সম্পাদনা 0 টি
2 সম্পাদনা 2 for পুনর্গঠনের জন্য পরীক্ষা করুন , আমার সমস্ত অ্যারে
3 সংশোধন করার পরে অ্যারে বোধগম্যতার প্রয়োজন নেই (আবার) শীর্ষস্থানীয় 0 এর জন্য চেক

F=n=>{
   for(;e=~n;console.log(e*l&&p-n?n+'.':n),--n)
     for(d of(p='')+n)p=(l=d<8?d-6?-d?e=0:0:9:24-d-d)+p
}

অসম্পূর্ণ এবং পরীক্ষা করা সহজ

F=n=>
{
  o = '';
  for( ; ~n; --n) // loop on n decreasing to 0 (~n is 0 when n==-1)
  {
    e = ~n; // init to a nonzero value, zero will mark 'invalid digit'
    p = ''; // build rotated number in p
    for(d of '' + n)
    {
      // l is the current digit, on exit will be the first digit of p
      l = d < 8 ?
            d != 6 ?
              d != 0 ?
                e = 0 // invalid char found, no matter what
                : 0 
              : 9 // 6 become 9
            : 24 - d - d; // calc 8 => 8, 9 => 6
      p = l + p;
    }       
    // e==0 if invalid char, l==0 if leading 0
    o += ' ' + ( e * l && p-n ? n+'.' : n);
  }
  console.log(o);
}

F(100)

আউটপুট

100 99. 98. 97 96 95 94 93 92 91 90 89. 88 87 86. 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68. 67 66. 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9. 8 7 6. 5 4 3 2 1 0

বন্ধনীগুলির মধ্যে লুপের সাথে নির্মাণের কোনও নাম আছে []? আমি একটি ডকুমেন্টেশন খুঁজছি, কারণ আমি এটিকে কেবল এতদূর অজগর থেকে জানতাম।
flawr

1
আমি মনে করি আপনি এখানে নতুন লাইনে অনেক কিছু সঞ্চয় করতে পারবেন।
ব্রিটিশিয়া

1
পাঠযোগ্যতার জন্য @ ব্রিটিশ নিউলাইন এবং ইন্ডেন্টেশন যুক্ত হয়েছে এবং গণনা করা হচ্ছে না। এটি একক লাইন
edc65


1

বাশ + কোর্টিলস, 105

for((i=0;i<=$1;i++));{
[ ${i//[0689]/} ]||[ $i = `rev<<<$i|tr 69 96` ]||((!${i: -1}))||d=.
echo $i$d
d=
}

টেস্ট:

$ ./rotproof.sh 100 | grep "\."
6.
9.
66.
68.
86.
89.
98.
99.
$ 

1

সেড, 467

সি # এর চেয়ে বেশি ...

@ Edc65 যখন উল্লেখ করেছে যে উত্তরগুলি 0-n এবং কেবল n নয় প্রক্রিয়া করা দরকার তখন আমি বেশ সুন্দরভাবে এটি সম্পন্ন করেছি। সেড কোডটি ইনক্রিমেন্ট 0-n এ যুক্ত করা একটি প্রচুর আরও কোড যুক্ত করে, কারণ এই কাজটি পাটিগণিত-কম সেডগুলির পক্ষে উপযুক্ত নয়।

:l
/^[0689]*$/{
h
s/$/:/
:x
s/([0-9]):(.*)/:\2\1/
tx
s/://
y/69/96/
G
/^([0-9]+)\n\1/be
s/^[^0].*/&./
:e
s/.*\n//
}
p
s/\.//
s/[0-9]/<&/g
s/0//g;s/1/_/g;s/2/__/g;s/3/___/g;s/4/____/g;s/5/_____/g
s/6/______/g;s/7/_______/g;s/8/________/g;s/9/_________/g
:t
s/_</<__________/
tt
s/<//g
s/_//
:b
s/__________/</g
s/<([0-9]*)$/<0\1/
s/_________/9/;s/________/8/;s/_______/7/;s/______/6/
s/_____/5/;s/____/4/;s/___/3/;s/__/2/;s/_/1/
s/</_/g
tb
s/^$/0/
/^0$/by
bl
:y
c\
0
p

ওপি অনুসারে, অর্ডার করা কোনও বিষয় নয়, তাই আমরা নীচে থেকে নীচে 0 পর্যন্ত কাজ করি।

আউটপুট:

$ sed -rnf rotproof.sed <<< 100 | grep "\."
99.
98.
89.
86.
68.
66.
9.
6.
$ 

1

এডাব্লুকে: 120

{a[a[6]=9]=6;a[8]=8;for(j=a[0]=0;j<=$0;++j){r="";for(i=j;i;i=int(i/10))r=r a[i%10];print(j~/[^0689]|0$/||j==r)?j:j"."}}

স্টিডিন থেকে n মান পড়ুন।

টেস্ট:

সি: \ এডাব্লু কে> গাক-ফ রেভেনাম.ওক | গ্রেপ \।
100
^ জেড
6.
9.
66.
68.
86.
89.
98.
99।


1

রেবোল - 195

for n 0 do input 1[b: copy a: form n d: c: 0 parse reverse a[any[m:"6"(change m"9"++ c)|"9"(change m"6"++ c)|"0"|"8"| skip(++ d)]]print rejoin [b either all[d = 0 c > 0 a != b a/1 != #"0"]"."{}]]

অবহেলিত + কিছু টিকা:

for n 0 do input 1 [
    b: copy a: form n
    d: c: 0

    ; reverse number and rotate "6" & "9"
    ; and do some counts (c when "6" or "9" and d when != "0689")
    parse reverse a [
        any [
            m:
              "6" (change m "9" ++ c)
            | "9" (change m "6" ++ c)
            | "0"
            | "8"
            | skip (++ d)
        ]
    ]

    print rejoin [
        b either all [
            d = 0               ; only has 0689 digits
            c > 0               ; must have at least one "6" or "9"
            a != b              ; not same when reversed
            a/1 != #"0"         ; does not "end" with zero
        ]
        "." {}                  ; if ALL then print "." else blank {}
    ]
]

1

বিসি, 158

পরে sed মধ্যে বিশুদ্ধরূপে এই কাজ সব স্ট্রিং এবং কোন নেটিভ গাণিতিক সঙ্গে Regex অপারেশন ব্যবহার করে, আমি এই অন্য উপায় কাছাকাছি, সব গাণিতিক এবং যুক্তিবিদ্যা অপারেশন অর্থাত এবং কোন স্ট্রিং / Regex দেখাবে কিভাবে দেখতে জানতে আগ্রহী ছিল:

for(i=read();i+1;r=0){p=1
for(x=i;x;x/=A){d=x%A
if(x==i&&!d)p=0
if(d==6||d==9)d=F-d else if(d%8)p=0
r=r*A+d}
if(r==i)p=0
print i--
if(p)print "."
print "\n"}

আউটপুট সাজানো ক্রমে সাজানো হয়।

আউটপুট:

$ bc rotproof.bc <<< 100 | grep "\."
99.
98.
89.
86.
68.
66.
9.
6.
$ 

1

পাইথন - 152

for i in range(input()+1):print`i`+("."*all([j in"0689"for j in`i`])and`i`[-1]!="0"and`i`!=`i`.replace("9","x").replace("6","9").replace("x","6")[::-1])

+1 টি। ভাল দেখাচ্ছে ... আপনি যদি এটি ছোট করার জন্য কিছু কৌশল শিখতে চান তবে অজগর 2 এ আরও একটি উত্তর রয়েছে যা প্রতিস্থাপনের পরিবর্তে অনুবাদ ব্যবহার করে এবং সম্পাদনা ইতিহাসে এটি 3 টি প্রতিস্থাপনকে 1 এর সাথে সংযুক্ত করারও একটি উপায় রয়েছে যা আসতে পারে ভবিষ্যতের প্রশ্নের জন্য উপকারে ...
ট্রিকোপল্যাক্স

2
দুর্দান্ত অগ্রগতি! : উপরে ছাড়াও এখানে আরো কিছু golfs এর "."if a[i]else"" -> "."*a[i], int(raw_input()) -> input()(যা সত্যিই ঠিক হয় eval(raw_input()))
Sp3000

কিছু golfes: (1) পাইথন 2, আপনি প্রতিস্থাপন করতে পারেন str(i)সঙ্গে `i`। (২) আপনি aকেবল একবার ব্যবহার করেন , সুতরাং কেন এটি ভেরিয়েবলের জন্য নির্ধারণ করুন।
Wrzlprmft

আমি আপনার দ্বিতীয় পরামর্শটি ব্যবহার করব, তবে আমি str(i)বেশ কয়েকবার ব্যবহার করব । আমি কোনটির সাথে প্রতিস্থাপন করতে পারি i?
কেএসএফটি

1
নয় i, তবে iব্যাকটিক্স সহ যা সমার্থক repr(i)। আপনি এটিকে str(i)সর্বত্র পরিবর্তে ব্যবহার করতে পারেন , যদিও আপনার কাছে str(i)প্রায়শ বার থাকলে এটি এটিকে একটি ভেরিয়েবলের জন্য বরাদ্দ করা এবং ব্যাকটিকগুলি ব্যবহারের পাশাপাশি এটি ব্যবহার করা সংক্ষিপ্ত হতে পারে। (অর্থাত্ x=`i`; (do stuff with x))
Sp3000

1

জাভাস্ক্রিপ্ট - 168 129 119 113 111 108

F=n=>{for(;~n;n--){r='';for(c of""+n)r=(c-6?c-9?c:6:9)+r;console.log(r-n&&!/[1-57]/.test(r)&&n%10?n+".":n)}}

4 5 6. 8 9. 16 60 66. 68. 69 906 909. 6090 9806. 9886 9889।

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

F=n=>{for(;~n;n--){
    r='';for(c of ""+n)r=(c-6?c-9?c:6:9)+r; // rotate
    console.log( // output, new-line is added
        // original number, and
        // append dot only if number is different than its rotated version and no un-rotatable digit is present and there is no zero at the end
        r-n && !/[1-57]/.test(r) && n%10
           ?n+".":n
    )}}

আমি রেগেক্সে খুব খুশি নই, কোন ধারণা?

সম্পাদনা : সঙ্গে ঝরঝরে কৌতুক শিখেছি ~এবং for (... of ...)@ edc65 থেকে
Edit2 পুনর্গঠিত শর্তাবলী:
Edit3 : দ্বারা প্রয়োগ পরামর্শ @ edc65


খারাপ পুতলি :) i=n+"";for(c of i)=> for(c of i=n+"")2 বাইট সংরক্ষণ
edc65

... এবং c==6?A:B=> c!=6=>B:A=>c-6?B:A
edc65

এছাড়াও, সাধারণত স্ট্রিং.ম্যাচ (রেজিএক্সএক্স), 1 বাইট সংক্ষিপ্তের পরিবর্তে রেজিএক্সপ্লেস্টেস্ট (স্ট্রিং) ব্যবহার করা যায়।
edc65

6 বাইট মোট, ধন্যবাদ :) for(c of i=n+"")আমি এটি দেখতে বেশ যুক্তিসঙ্গত হয়, কিন্তু আমি এটি মনে করব না। c-6?B:A
Forbশ্বর

রিজএক্সপ্যাক্স সম্পর্কে ধারণা: আপনার আরও 1 আকর নয়, 1 টি অবৈধ চর পরীক্ষা করা দরকার, সুতরাং '+' প্রয়োজন হয় না f আপনি যদি আপনার কনসোল.লগ অভিব্যক্তির সাথে ঝাঁকুনি খেতে পারেন তবে আপনি 8 টি বাইট সংরক্ষণ করতে পারবেন ... তবে আমি আপনার উত্তরটি মনে করি খুব সংক্ষিপ্ত হবে
edc65

1

05 এ বি 1 ই , 38 37 30 29 বাইট

ÝεÐSUT%ĀiŽR!XåPiÐ69‡RÊi'.«]»

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

ব্যাখ্যা:

Ý                # Inclusive 0-based range: [0, (implicit) input]
 ε               # Map each integer to:
  Ð              #  Triplicate the current integer
  SU             #  Convert it to a list of digits, and pop and store it in variable `X`
    Ti         #  If the current integer contains no trailing zeros
    ŽR!XåPi      #  And if the current integer only consists of the digits [0689]
    Ð69‡RÊi     #  And if the current integer is not the same when its 6s and 9s
                 #  are swapped and then the total is reversed
             '.« #   Concat a '.'
                 #  Implicit else: use the top of the stack (the duplicate current integer)
]                # Close all three ifs and the map
 »               # Join the resulting list by newlines (and output implicitly)

কিছু অংশের অতিরিক্ত ব্যাখ্যা:

Ti       # Check if the integer contains no trailing zeros:
T          #  Push 10 (T is a builtin for 10)
 %         #  Modulo
  Ā        #  Trutified: 0 remains 0 (falsey), everything else becomes 1 (truthy)
           #   i.e. 12 % 10 → 2 → 1 (truthy)
           #   i.e. 68 % 10 → 8 → 1 (truthy)
           #   i.e. 70 % 10 → 0 → 0 (falsey) (70 remains as is)
           #   i.e. 609 % 10 → 9 → 1 (truthy)
           #   i.e. 808 % 10 → 8 → 1 (truthy)

ŽR!XåPi    # Check if the integer only consists of the digits 0, 6, 8 and/or 9:
ŽR!        #  Push 6890 (Ž is a builtin for 2-char compressed integers, where R! is 6890)
   X       #  Push variable `X` (the list of digits)
    å      #  Check for each of these digits if they're in "6890"
     P     #  Take the product of that list
           #   i.e. [1,2] → [0,0] → 0 (falsey) (12 remains as is)
           #   i.e. [6,8] → [1,1] → 1 (truthy)
           #   i.e. [6,0,9] → [1,1,1] → 1 (truthy)
           #   i.e. [8,0,8] → [1,1,1] → 1 (truthy)

Ð69‡RÊi   # Check if the integer with 6s and 9s swapped and then reversed isn't unchanged:
Ð          #  Triplicate the integer
 69        #  Push 69
   Â       #  Bifurcate (short for Duplicate & Reverse)
          #  Transliterate (in `a` replace all characters `b` with characters `c`)
     R     #  Reverse
      Ê    #  Check for inequality
           #   i.e. 68 → "68" → "98" → "89" → 68 != "89" → 1 (truthy) (68 becomes "68.")
           #   i.e. 609 → "609" → "906" → "609" → 609 != "609" → 0 (falsey) (609 remains as is)
           #   i.e. 808 → "808" → "808" → "808" → 808 != "808" → 0 (falsey) (808 remains as is)

0

পার্ল - 84

for(0..$ARGV[0]){s/6/x/g;s/9/6/g;s/x/9/g;printf"$_%s\n",$_=~/^[0689]+[689]$/?".":""}

0

পাওয়ারশেল, 111 102 বাইট

param($s)$s+'.'*!($s-match'[1-57]|0$|'+-join$(switch -r($s[($s.Length-1)..0]){'0|8'{$_}'6'{9}'9'{6}}))

ব্যাখ্যা করা স্ক্রিপ্ট:

$f = {

param($s)           # input string
$l=$s.Length        # length of the string
$c=$s[($l-1)..0]    # chars of the string in the reversed order
$d=switch -r($c){   # do switch with regex cases for each char
    '0|8'{$_}       # returns the current char if it equal to 8 or 0
    '6'{9}          # returns 9 if the current char is 6
    '9'{6}          # returns 6 if the current char is 9
}                   # returns array of new chars (contains 0,6,8,9 only)
$s+'.'*!(            # returns s. Add '.' if not...
    $s-match'[1-57]|0$|'+-join$d
                    # $s contains chars 1,2,3,4,5,7 or
                    # ends with 0 or
                    # equal to string of $d
)

}

@(
    ,('2'    ,'2'   )
    ,('4'    ,'4'   )
    ,('5'    ,'5'   )
    ,('6.'   ,'6'   )
    ,('7'    ,'7'   )
    ,('9.'   ,'9'   )
    ,('16'   ,'16'  )
    ,('60'   ,'60'  )
    ,('66.'  ,'66'  )
    ,('68.'  ,'68'  )
    ,('69'   ,'69'  )
    ,('906'  ,'906' )
    ,('909.' ,'909' )
    ,('8088.','8088')
    ,('9806.','9806')
    ,('9886' ,'9886')
    ,('9889.','9889')
) | % {
    $e,$s = $_
    $r = &$f $s
    "$($r-in$e): $r"
}

আউটপুট:

True: 2
True: 4
True: 5
True: 6.
True: 7
True: 9.
True: 16
True: 60
True: 66.
True: 68.
True: 69
True: 906
True: 909.
True: 8088.
True: 9806.
True: 9886
True: 9889.

0

স্ট্যাক্স , 27 বাইট

Ç▒≈♣▌╬"÷╜─B↓«âpø←╚S☼ì>♫è;&╛

এটি চালান এবং এটি ডিবাগ করুন

আনপ্যাকড, নিরবচ্ছিন্ন এবং মন্তব্য করা হয়েছে, এটি দেখতে এমন দেখাচ্ছে।

0p      print 0 with no line break
F       for each [1 .. n] execute the rest of the program, where n is the input
  zP    print a newline
  q     peek and print the iterating variable without newline
  A%!C  modulo 10, and cancel iteration if zero (this cancels for multiples of 10)
  _$cc  convert iterating value to string and duplicate it twice on the stack
  7R6-$ construct the string "123457"
  |&C   if the character intersection is truthy, cancel the iteration
  r     reverse string
  69$:t map 6 and 9 characters to each other
  =C    if this rotated string is equal to the original, cancel iteration
        print "." with no newline 
        (this comment precedes the instruction because it's an unterminated literal)
  ".

এটি চালান

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