ওয়াইল্ডকার্ড ক্রমের সাথে মেলে এমন সমস্ত স্কোয়ার [বন্ধ]


9

এটি 2016 এআরএমএল প্রতিযোগিতা টিম সমস্যা # 6 এর অংশ দ্বারা অনুপ্রাণিত হয়েছিল।

এখানে চ্যালেঞ্জ:

আপনাকে একটি "ওয়াইল্ডকার্ড সিকোয়েন্স" দেওয়া হয়েছে, যা অঙ্কগুলির ক্রম এবং অন্য একটি চরিত্র। একটি স্ট্রিং নিম্নলিখিত উইন্ডোকার্ডের সাথে এই ওয়াইল্ডকার্ড ক্রমের সাথে মেলে:

w = wildcard
s = string
# s matches w iff
for all 0 >= i > wildcard.length, w[i] == '?' or s[i] == w[i]

কোথায় '?' আপনার পছন্দ একটি চরিত্র।

রেজেক্সের ক্ষেত্রে, ঠিক কী '?'হতে হবে তা কল্পনা করুন '.'

চ্যালেঞ্জটি হ'ল সমস্ত বর্গ সংখ্যা (প্রয়োজনীয়তা 1 মিলিয়ন পর্যন্ত) যার দশমিক স্ট্রিং উপস্থাপনাগুলি এই ওয়াইল্ডকার্ড ক্রমের সাথে মেলে। "ওয়াইল্ডকার্ড চরিত্র" আপনার পছন্দের কোনও ASCII চরিত্র হতে পারে, যতক্ষণ না এটি অঙ্ক নয়, স্পষ্টতই।

উদাহরণস্বরূপ, 4096ম্যাচগুলি 4**6এবং 4*9*তবে 4114কোনওটির সাথে মেলে না।

ইনপুট

রেজেক্সের সাথে মিলে যাওয়া ক্রম হিসাবে ইনপুট দেওয়া হবে [0-9?]+। এটি স্ট্রিং, একটি অক্ষরের অ্যারে বা ASCII- তে অক্ষরের একটি বাইট অ্যারে হতে পারে।

আউটপুট

আউটপুট হ'ল আপনি যা চান তা-বাদ দেওয়া তালিকা / সেট / সংখ্যার অ্যারে যা নিখুঁত স্কোয়ার এবং ওয়াইল্ডকার্ড ক্রমের সাথে মেলে।

বৈধ ইনপুটগুলির উদাহরণ:

1234567*90
1234567?90
1234567u90
['1', '2', '3', '4', '5', '6', '7', '*', '9', '0']
[49, 50, 51, 52, 53, 54, 55, 42, 57, 48]
[1, 2, 3, 4, 5, 6, 7, '*', 9, 0]

বৈধ আউটপুটগুলির উদাহরণ:

[1, 4, 9]
1 4 9
1, 4, 9
1-4-9

প্রভৃতি

বিশেষ উল্লেখ

  • নির্দিষ্ট পরিসরে স্কোয়ারের তালিকা খুঁজে পাওয়ার জন্য আপনি বিল্টিনগুলি ব্যবহার করতে পারবেন না
  • স্ট্যান্ডার্ড লুফোলস প্রয়োগ করুন
  • আপনি অবশ্যই 1 000 000 (1 মিলিয়ন) অবধি পরিচালনা করতে সক্ষম হবেন
  • যদি ইনপুট সরবরাহ করা হয় তবে 1******এটি মুদ্রণ করা ঠিক [1000000]। এটি প্রিন্ট করাও ঠিক[1000000, 1002001, 1004004, 1006009, 1008016, 1010025, ...]
  • ওয়াইল্ডকার্ড ক্রমগুলি কখনই ওয়াইল্ডকার্ড চরিত্রের সাথে শুরু হবে না; অর্থাৎ, তারা সর্বদা একই দৈর্ঘ্যের স্ট্রিংগুলির সাথে মিলবে।

পরীক্ষার কেস

4**6  ->  [4096, 4356]
1**1  ->  [1521, 1681]
1**  ->  [100, 121, 144, 169, 196]
9****9  ->  [908209, 915849, 927369, 935089, 946729, 954529, 966289, 974169, 986049, 994009]
9*9***  ->  [919681, 929296]
1**0*  ->  [10000, 10201, 10404, 10609, 12100, 14400, 16900, 19600]
9***4  ->  [91204, 94864, 97344]

জয়লাভ

14 ই ফেব্রুয়ারির মধ্যে সংক্ষিপ্ত (বৈধ) (কার্যকরী) জমা দেওয়া, টাইয়ের বিরতিতে প্রথমতম জমা দিয়ে বিজয়ী।


1
আমি মনে করি এই পরিষ্কার করার জন্য একটি ভাল সূচনা ?উত্তরদাতার দ্বারা বেছে নেওয়া হবে তা নির্দিষ্ট করা হবে।
FryAmTheEggman

2
কেন 25একটি বৈধ উত্তর ***কিন্তু জন্য নয় *2*?
নীল

3
আমি মনে করি সংখ্যাটি যদি আগে জিরো না নিয়ে থাকে তবে এটি আরও পরিস্কার হবে, সুতরাং কেবল তাদের দৈর্ঘ্যের মিল রয়েছে।
xnor

@ নীল এটি আমার নিজের সমাধানে সমস্যা হবে। আমি এক্সনরের পরামর্শ নেব।
হাইপারনিউটারিনো

ইনপুট কি কোনও অঙ্কের পূর্ণসংখ্যার অ্যারে এবং বিশেষ অক্ষর, যেমন {4, "w", "w", 6}(বা আরও ভাল, {4, w, w, 6}), যেমন অক্ষরের অ্যারের পরিবর্তে হতে পারে {"4", "w", "w", "6"}?
গ্রেগ মার্টিন

উত্তর:


0

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

সম্ভবত এখানে উন্নতির জন্য প্রচুর জায়গা।
কোনও অ-অঙ্ক ওয়াইল্ডকার্ডের মতো ঠিক আছে।

3°LnvyS¹)ø€Æ0QPyg¹gQ&—

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

আরও গল্ফ করার পরে আসার ব্যাখ্যা।


এটি সমস্ত ইনপুটগুলির জন্য কাজ করে বলে মনে হচ্ছে। ভাল করেছ.
হাইপার নিউট্রিনো

1

গণিত, 44 বাইট

Print@@@IntegerDigits[Range@1*^3^2]~Cases~#&

ইনপুটটি হ'ল _ওয়াইল্ডকার্ড হিসাবে (কোনও উদ্ধৃতি নেই) সংখ্যাগুলির তালিকা । যেমন{4, _, _, 6}

ব্যাখ্যা

Range@1*^3

তালিকা তৈরি করুন {1, 2, 3, ... , 1000}

... ^2

এটি স্কোয়ার। (1 থেকে 1,000,000 পর্যন্ত সমস্ত স্কোয়ারের তালিকা)

IntegerDigits[ ... ]

প্রতিটি বর্গকে অঙ্কের তালিকায় বিভক্ত করুন।

... ~Cases~#

ইনপুট দ্বারা নির্দিষ্ট প্যাটার্নের সাথে মেলে এমনগুলি সন্ধান করুন।

Print@@@ ...

সেগুলি মুদ্রণ করুন।


এটি সমস্ত পরীক্ষার ক্ষেত্রে কাজ করে বলে মনে হচ্ছে। ভাল করেছ.
হাইপারনিউটারিনো

1

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

@e:{@$|,}a#0:{c.~^#I,}f

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

ব্যাখ্যা

@e                        Split into a list of characters
  :{@$|,}a                Replace each digit char by the corresponding digit, and each things
                            that are ot digits into variables
          #0              All elements of the resulting list must be digits
            :{       }f   Output is the result of finding all...
              c.            ...concatenations of those digits which...
               .~^#I,       ...result in a number which is the square of an integer #I

বিভিন্ন ইনপুট ফর্ম্যাট, 13 বাইট

আপনার ইনপুট হিসাবে বৈধ বলে বিবেচনা করে তার উপর নির্ভর করে আপনি এটি করতে পারেন:

#0:{c.~^#I,}f

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

যা মূলত উপরের উত্তরের দ্বিতীয় অংশ, যেখানে ওয়াইল্ডকার্ডগুলি রয়েছে সেখানে অঙ্ক এবং ভেরিয়েবলযুক্ত ইনপুট হিসাবে একটি তালিকা রয়েছে।

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


এটি সমস্ত ইনপুটগুলির জন্য কাজ করে বলে মনে হচ্ছে। ভাল করেছ. তবে, আমি এটিকে 24 বাইট হিসাবে বিবেচনা করব কারণ 1 বাইট আর্গুমেন্ট প্রয়োজন। আমি নিশ্চিত না যে এই জন্য স্কোরিং কিভাবে কাজ করবে not
হাইপার নিউট্রিনো

1
@AlexL। আর্গুমেন্টটি কেবলমাত্র আউটপুট ভেরিয়েবলের নাম বলতে (আপনি চাইলে অন্য বড় হাতের অক্ষর ব্যবহার করতে পারেন)। প্রোলগ / ভাষাগুলিতে এমন ফাংশনগুলির সাথে উত্তরগুলির অনুরূপ যেখানে প্রিডিকেট / ফাংশনটির নাম দেওয়া হয়েছে তবে আপনি যখন কল করবেন তখন আপনি যে বাইটগুলি ব্যবহার করবেন তা বাস্তবে গণনা করেন না।
13:51

ঠিক আছে. আমি নিশ্চিত নই যে আর্গুমেন্টটি প্রয়োজনীয় (যেহেতু এটি কেবল ফিরে আসে true.) যেহেতু 24 হিসাবে স্কোর করা উচিত কিনা তবে আমি এর আগে যে ভাষাগুলি প্রয়োজন সেগুলি আমি ব্যবহার করি নি। আমি কীভাবে এটি স্কোর করব তা নির্ধারণ করার জন্য আমি কিছু রেফারেন্স সন্ধান করার চেষ্টা করব, তবে এটি 23 হিসাবে স্কোর করা বুদ্ধিমানের কাজ হবে, তাই আমি এটি এ রেখে দেব।
হাইপারনিউট্রিনো

1

পার্ল 6 , 30 26 বাইট

-4 বাইটের জন্য @ বি 2 গিলসকে ধন্যবাদ!

{grep /^<$_>$/,map * **2,^1e4}

{grep /^<$_>$/,(^1e4)»²}

ডটটি ওয়াইল্ডকার্ড চরিত্র হিসাবে ব্যবহার করে, যাতে ইনপুটটিকে একটি রেজেক্স হিসাবে ব্যবহার করা যায়:

{                            }   # a lambda
                         ^1e4    # range from 0 to 9999
               map * **2,        # square each value
 grep /      /,                  # filter numbers that match this regex:
        <$_>                     #   lambda argument eval'ed as sub-regex
       ^    $                    #   anchor to beginning and end

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

একটি ভেরিয়েন্ট যা তারকাচিহ্নটিকে ওয়াইল্ডকার্ড হিসাবে গ্রহণ করে (টাস্ক বর্ণনার পূর্ববর্তী পুনর্বিবেচনার দ্বারা প্রস্তাবিত) হবে 42 বাইট:

{grep /^<{.trans("*"=>".")}>$/,(^1e4)»²}

আমি নিয়মগুলি পুনঃস্থাপন করেছি এবং আপনি যে কোনও ওয়াইল্ডকার্ড চরিত্র চয়ন করতে পারেন। আমি এটি 38 বাইট হিসাবে স্কোর করছি।
হাইপারনিউট্রিনো

উম, আপনি এটি কিভাবে ব্যবহার করবেন? পার্ল সম্পর্কে আমি কিছুই জানি না।
হাইপারনিউট্রিনো

@ অ্যালেক্সএল: ধন্যবাদ, আমি উত্তর আপডেট করেছি (এবং একটি ব্যাখ্যাও যুক্ত করেছি) added এটি একটি ল্যাম্বডা; আপনি এটিকে সরাসরি কল করতে পারেন (উদাঃ { ... }("9*9***")), বা পরে ব্যবহারের জন্য এটিকে ভেরিয়েবল / চিহ্নের জন্য নির্ধারণ করতে পারেন। নোট করুন যে পার্ল 6 পার্লের থেকে পৃথক ভাষা, সুতরাং এটি পার্ল দোভাষী দিয়ে কাজ করবে না।
স্মৃতি

আমি sudo apt-get install rakudoঅনুমিত পার্ল inter দোভাষী পেয়েছিলাম ... যখন আমি perl6আমার টার্মিনালে একটি কমান্ড হিসাবে রাখি তখন এটি পেরিল inter দোভাষী হিসাবে মনে হয়, তবে এটি কীভাবে ব্যবহার করতে হয় তা আমি জানি না। আমি জানি এটি একটি ল্যাম্বডা, তবে আমি কীভাবে এটি ডাকতে জানি না।
হাইপারনিউটারিনো

@ অ্যালেক্সএল: আমি একটি "এটি অনলাইনে চেষ্টা করুন" লিঙ্কটি যুক্ত করেছি যা এটিকে পুরো স্ক্রিপ্ট হিসাবে দেখায় যা আপনি চালাতে পারেন perl6 foo.p6। আপনি এটি শেল অনেলিনারেও পরীক্ষা করতে পারেন, যেমনperl6 -e 'say {grep /^<$_>$/,map * **2,^1e4}( "9.9..." )'
স্মৃতি

1

রুবি, 54 বাইট

ফাংশন যা একটি স্ট্রিং আর্গুমেন্ট নেয়। এটি অনলাইনে চেষ্টা করুন।

->s{(0..1e3).map{|i|"#{i**2}"[/^#{s.tr ?*,?.}$/]}-[p]}

আপনি আই * আই 2 এর পরিবর্তে আই * আই ব্যবহার করে একটি বাইট সংরক্ষণ করতে পারেন
জিবি

এটি কাজ করে বলে মনে হচ্ছে না কারণ দ্বিতীয়টি #লাইনের বাকী অংশটিকে একটি মন্তব্য করছে।
হাইপারনিউটারিনো

@ অ্যালেক্সএল ওহ, এটি ঠিক আছে। repl.it/FJCV
মান কালি

ওহহহ ঠিক আছে আমি রুবিকে কীভাবে পরীক্ষা করব জানি না। আমার ক্ষমা। এটি সমস্ত ইনপুটটির জন্য কাজ করে বলে মনে হচ্ছে। ভাল করেছ!
হাইপারনিউটারিনো

0

ব্যাচ, 109 বাইট

@for /l %%i in (0,1,999)do @set/aj=%%i*%%i&call copy nul %%j%%.%%j%%$>nul
@for %%s in (%1.%1$)do @echo %%~ns

?ওয়াইল্ডকার্ড হিসাবে ব্যবহার করে। 1000 ফাইল তৈরি করে কাজ করে। ফাইলটির নাম বর্গ সংখ্যা এবং ফাইলটির প্রসারিত হ'ল $প্রত্যয়যুক্ত বর্গ সংখ্যা । এটি কারণ, ব্যাচের প্যাটার্নের প্যাটার্নের মিলটি গুনটিকে al ?চ্ছিক হিসাবে অনুসরণ করে , সুতরাং 1?উভয়টি মিলবে 1এবং 16; $অতএব বাধ্য করে ম্যাচ সঠিক হতে হবে। যাইহোক, আমরা আউটপুট আউট করতে চাই না $, তাই আমরা কেবলমাত্র এক্সটেনশন ছাড়াই ফাইলের নাম আউটপুট করি।


0

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

সম্পাদনা: জংহওয়ান মিনের উত্তরের দ্বারা অনুপ্রাণিত হয়ে আমার সমাধানটি নীচে আপডেট করেছে । এটি এখন ES6 অনুগত।

ওয়াইল্ডকার্ড '1..4'যেখানে আছে সেই বিন্যাসে ইনপুট নেয় .

1e6 এ পুনরাবৃত্তি করা এবং স্কোয়ারের মূলের পরিবর্তে এটি 1e3 এবং স্কোয়ারে পুনরাবৃত্তি করে।

p=>[...Array(1e3)].map((_,n)=>''+n*n).filter(n=>n.match(`^${p}$`))

জাভাস্ক্রিপ্ট (ES7), 71 69 বাইট

p=>[...Array(1e6).keys()].filter(n=>n**.5%1?0:(''+n).match(`^${p}$`))

0 থেকে 1e6 পর্যন্ত সংখ্যার একটি অ্যারে তৈরি করে তারপরে এটি বর্গক্ষেত্রের সংখ্যা অনুসারে ফিল্টার করে এবং প্যাটার্নের সাথে মেলে।

এটি ভয়ঙ্করভাবে ধীর কারণ এটি সর্বদা 1e6 এ পুনরাবৃত্তি করে।


আমি মনে করি না **কাজ করছে, কারণ এটি আমাকে একটি দিচ্ছে "SyntaxError: expected expression, got '*'"
হাইপারনিউটারিনো

@AlexL। নিয়মগুলি পরিবর্তন হয়েছে বলে মনে হচ্ছে। পূর্ববর্তী নিয়মগুলি পরামর্শ দিয়েছিল যে আমি ওয়াইল্ডকার্ডের চরিত্রটি বেছে নিতে পারি।
জর্জ রিথ

আপনার কেবলমাত্র সমর্থন করা দরকার 1e6...
হাইপারনিউটারিনো

অতিরিক্তভাবে, আমি নিয়মগুলি ফিরিয়ে দিয়েছি; সমস্যাটি নিয়মগুলির সাথে নয়, এটি **অপারেটরটির অস্তিত্ব না থাকার কারণে, কমপক্ষে আমার সিস্টেমের সাথে নয়।
হাইপারনিউট্রিনো

@AlexL। আহ দুঃখিত আমি ভেবেছিলাম তুমি ইনপুট বোঝানো **। হ্যাঁ এটি ES7 আমি শিরোনাম আপডেট করব এখানে বর্তমানে সমর্থিত ব্রাউজারগুলির বিকাশকারীদের
জর্জ রিথ

0

পার্ল, 42 45 38 বাইট

সম্পাদনা: অ্যালেক্সের ব্যাখ্যা, আমরা পিরিয়ডটিকে ওয়াইল্ডকার্ড চরিত্র হিসাবে ব্যবহার করতে পারি যা y // অপারেশন বন্ধ করে দেয়।

perl -pe 's|.*|@{[grep/^$&$/,map$_*$_,1..1e3]}|'

সম্পাদনা: এমন দ্রবণ যা ওয়াইল্ডকার্ড চরিত্র হিসাবে তারকাচিহ্ন ব্যবহার করে এবং STDIN এ ওয়াইল্ডকার্ড ক্রমটি প্রত্যাশা করে

perl -pe 'y/*/./;s|.*|@{[grep/^$&$/,map$_*$_,1..1e3]}|'

এটি নিঃসন্দেহে উন্নতির জন্য অনেক জায়গা ছেড়ে যায়, এটি বেশ সোজা। ওয়াইল্ডকার্ড এক্সপ্রেশনটি পিরিয়ড ওয়াইল্ডকার্ড অক্ষর (আর কি?) সহ কমান্ড লাইন আর্গুমেন্ট হিসাবে প্রত্যাশিত।

say"@{[grep/^$ARGV[0]$/,map$_*$_,1..1e3]}"

প্রশ্নটি উল্লেখ করে যে ওয়াইল্ডকার্ডগুলি asterisks হিসাবে দেওয়া হয়। প্রশ্নের পূর্ববর্তী সংশোধনটি কি আপনার নিজের ওয়াইল্ডকার্ড চরিত্রটি বেছে নেওয়ার অনুমতি দিয়েছে?
স্মৃতি

1
@ এসএমএলএস: প্রশ্নটি এখনও আপনার নিজের ওয়াইল্ডকার্ডটি বেছে নেওয়ার বিষয়টি নির্দিষ্ট করে যদিও এটি নিয়ম বিভাগে নেই: ওয়াইল্ডকার্ড হিসাবে ব্যবহৃত চরিত্রটি
Emigna

হ্যাঁ, আমি এতে বিভ্রান্ত হয়ে পড়েছি। পরবর্তীতে, এটি স্পষ্টভাবে বলেছে যে ওয়াইল্ডকার্ড চরিত্রটি একটি তারকাচিহ্ন হওয়া দরকার। আমার ধারণা রেজেক্সের সাথে সংজ্ঞাটি নেতৃত্ব দিচ্ছে। আমি আমার সমাধানটি সংশোধন করব।
ড্যানিয়েল

1
এইচ এম আসলে, @ এমিগানার দ্বারা উদ্ধৃত বাক্যটি বেশ স্পষ্ট যে আমরা আমাদের নিজস্ব ওয়াইল্ডকার্ড চরিত্রটি বেছে নিতে পারি , তাই না?
স্মৃতি

স্পষ্ট করার জন্য, ওয়াইল্ডকার্ড চরিত্রটি আপনি যা চান তা হতে পারে। ব্যাখ্যাটি বিশ্রাম নেওয়ার সময় আমি ঘটনাক্রমে নিয়মগুলিতে গণ্ডগোল করেছি।
হাইপারনিউটারিনো

0

পাইথন 3 - 98 97 বাইট

import re;print(re.findall(r"\b"+input()+r"\b",("\n".join([str(x*x) for x in range(1,1001)]))))

'4..6' এর মতো ইনপুট দরকার।


আপনি ব্যবহার করে 3 বাইট সংরক্ষণ করতে পারেন import reএবং re.findall; from...import *এই ক্ষেত্রে এটির সাথে অপ্টিমাইজেশন আসলে অনুকূলিত হয় না।
হাইপারনিউটারিনো

প্রদত্ত ইনপুট 1...., এটি দেয় 1 4 9এবং 16 25বৈধ উত্তর হিসাবে, যা সঠিক নয়। আপনার প্রোগ্রামটি সংশোধন করুন।
হাইপারনিউটারিনো

"\ N" এ যোগদান করে কেস ফিক্সেট করুন।
কেরা

এটি কাজ করে না 1......। এটি ফিরে আসে [], তবে এটি দেওয়া উচিত [1000000]। এটি ব্যবহার range(0, 1001)না করে 0 বাইট ব্যয়ে স্থির করা যেতে পারে range(0, 1000)
হাইপারনিউট্রিনো

ভাল কথা, আমি বর্ণনা থেকে সমস্ত পরীক্ষার
কেসটি

0

k - 28 টি অক্ষর

{s(&:)($:s:s*s:!1001)like x}

?ওয়াইল্ডকার্ড চরিত্র হিসাবে ব্যবহার করে । likeফাংশন ব্যবহার ?একটি ওয়াইল্ড কার্ড, এবং এই ফাংশন প্রথম 1001 স্কোয়ার একটি তালিকা তোলে (1M থেকে সমেত হতে), তাদের সবাইকে স্ট্রিং কাস্ট, এবং তারপর চেক যেখানে তারা প্যাটার্ন মেলে।

    {s(&:)($:s:s*s:!1001)like x} "1??"
100 121 144 169 196

আমি এটা জন্য এই ত্রুটি পেয়ে করছি: type error {s(&:)($:s:s*s:!1001)like x} "1" at execution instance 2 of ":"। আপনি কি কোনও ওয়ার্কিং টেস্ট স্যুটিতে একটি লিঙ্ক সরবরাহ করতে পারেন বা দেখতে সমস্যা আছে কিনা তা দেখতে পারেন?
হাইপারনিউটারিনো

@AlexL। এটি আমার জন্য কেডিবি + এর কে মোডে কাজ করে
সি কুইলি

হুম। আমি এটি বিভিন্ন দোভাষী দিয়ে পরীক্ষা করার চেষ্টা করব।
হাইপারনিউটারিনো

0

ব্যাশ + ইউনিক্স ইউটিলিটিস, 33 বাইট

dc<<<'0[2^pv1+lax]dsax'|grep ^$1$

এটি 'ব্যবহার করে।' ওয়াইল্ডকার্ড চরিত্র হিসাবে

ডিসি প্রোগ্রামটি অসীম লুপে বর্গ সংখ্যাগুলি মুদ্রণ করে:

0     Push 0 on the stack.

[     Start a macro (called a).

2^    Square the number at the top of the stack.

p     Print the number at the top of the stack, followed by a newline.

v     Replace the number at the top of the stack (a square number) with its square root.

1+    Increment the number at the top of the stack.

lax   Run the macro again (looping).

]     End of the macro.

dsax  Store the macro in register a and run it.

ডিসি আউটপুটটি গ্রেপ-এ পাইপ করা হয়, যা প্রয়োজনীয় প্যাটার্নের সাথে মেলে কেবল স্কোয়ারগুলি মুদ্রণ করে।

এটি কাজ করে যখন আমি এটি একটি আসল লিনাক্স বা ওএস এক্স সিস্টেমে চালিত করি (তবে এটি টিআইও তে কাজ করে না, সম্ভবত ডিসি প্রোগ্রামটি চিরতরে পুনরাবৃত্তি করার চেষ্টা করে এবং আমার সন্দেহ হয় যে টিআইও পুনরাবৃত্তির জন্য স্ট্যাক স্পেসের বাইরে চলে গেছে) এবং কখনও না শেষ পাইপ নিয়ে সমস্যা)।


আমি এটি লিনাক্স মিন্টের সাথে চালাচ্ছি 17.3 রোজা, এবং এটি শেষ হচ্ছে না। আমি মনে করি সমস্যাটি কখনও শেষ না হওয়া dcআদেশের সাথে।
হাইপারনিউটারিনো

আমার সন্দেহ হয় এটি আসলে বাফারিংয়ের ফলেই সমস্যাটি দেখা দিয়েছে। আমার কাছে লিনাক্সের সেই সংস্করণটি নেই, তবে আপনি গ্রেপকে গ্রেপ - লাইন-বাফার দিয়ে প্রতিস্থাপনের চেষ্টা করতে পারেন (প্রতিটি লাইনটি গ্রেপড হিসাবে মুদ্রিত করার কারণ হিসাবে)। [অবশ্যই, এটি বেশ কয়েকটি বাইট যুক্ত করে।]
মিচেল স্পেক্টর

আমি গ্রেপ আর্গুমেন্ট যুক্ত করেছি, তবে এটি কোনও পার্থক্য করে না। আমি --line-bufferedউভয় পক্ষের উপর লাগানোর চেষ্টা করেছি ^$1$, তবে এটি কোনওভাবেই কাজ করে না।
হাইপারনিউটারিনো

@ অ্যালেক্সএল. চেষ্টা করার জন্য আপনাকে ধন্যবাদ। আমি জানি না পার্থক্যটি কার্নেলের মধ্যে রয়েছে বা ব্যাশ সংস্করণে আমি চলছে। মাথায় ব্যবহার করে গ্রেপের ইনপুটটি শেষ করে জোর করে টিআইওতে কাজ করার বিষয়টি পেয়েছি: ডিসি <<< '0 [2 ^ পিভি 1 + লক্ষ] ডিএসএক্স' | মাথা -1 sed s/./0/g<<<$1| গ্রেপ ^ $ 1 $ এটি দৈর্ঘ্যের ব্যবহার করে সংখ্যার পরীক্ষিত হওয়া সীমাবদ্ধ করার জন্য প্যাটার্ন (4-চরিত্রের নিদর্শনগুলি কেবল 9999 পর্যন্ত চেক করা হবে)। এখানে একটি টিআইও লিঙ্ক: tio.run/nexus/…
মিচেল স্পেক্টর

ঠিক করার জন্য আপনাকে ধন্যবাদ। আমি মনে করি না যে বর্তমান সমাধানটি আসলে কাজ করবে (যদিও আমার বাশ সম্পর্কে খুব বেশি জ্ঞান নেই), কারণ এটি প্রদর্শিত হয় যে এটি খাওয়ানোর আগে এটি সমস্ত মান গণনা করা দরকার grep। তবে এটি বর্তমানে সংক্ষিপ্ততম সমাধান না হওয়ায় স্কোরিংয়ের জন্য আমি এটি 33 বাইটে রাখব। এটি সমস্ত ইনপুটগুলির জন্য কাজ করে বলে মনে হচ্ছে, এত ভাল কাজ!
হাইপারনিউট্রিনো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.