স্ট্রিংয়ের সাথে খাপ খায় এমন সমস্ত নম্বর


12

একটি প্রোগ্রাম বা ফাংশন যা একটি ধনাত্মক পূর্ণসংখ্যা এন আউটপুট সমস্ত স্বতন্ত্র দশমিক সংখ্যার যে লেখা যেতে পারে একটি তালিকা লাগে লিখুন ঠিক এন অক্ষর সংখ্যা (ব্যবহার 0123456789), দশমিক পয়েন্টের ( .), এবং নেতিবাচক প্রতীক ( -)।

উদাহরণস্বরূপ, কিছু সংখ্যার যে এন = 4 আউটপুট তালিকায় হবে হয় 1337, 3.14, .999, -789, -2.7, এবং -.09

সংখ্যাগুলি স্বাভাবিক পদ্ধতিতে লিখতে হয় তবে সংক্ষিপ্তভাবে সম্ভব একটি ফর্ম । এর অর্থ:

  • দশমিক পয়েন্টটি কেবলমাত্র সংখ্যায় অন্তর্ভুক্ত করা উচিত যদি সংখ্যাটি পূর্ণসংখ্যা না হয়।

    • যেমন 45.0এবং 45.সরল হিসাবে লেখা উচিত45
    • -45.00 হিসাবে লেখা উচিত -45
  • দশমিক বিন্দুর বামে কোনও নেতৃস্থানীয় শূন্য নেই।

    • 03এবং 003এভাবে লিখতে হবে 3, কিন্তু 30এবং 300হিসাবে তারা জরিমানা
    • 0.3এবং 00.3ঠিক হিসাবে লেখা উচিত.3
    • -03 হিসাবে লেখা উচিত -3
    • -0.3 হিসাবে লেখা উচিত -.3
  • দশমিক বিন্দুর ডানদিকে কোনও পিছনে জিরো থাকা উচিত নয়

    • .50এবং .500হিসাবে লেখা উচিত.5
    • 900.090 হিসাবে লেখা উচিত 900.09
  • দুটি শেষ নিয়মের ব্যতিক্রম নিজেই শূন্য, যা সর্বদা সরল হিসাবে লেখা0 উচিত ।

  • ইতিবাচক চিহ্নগুলি ( +) ব্যবহার করা উচিত নয় যেহেতু তারা অযাচিতভাবে সংখ্যাটি দীর্ঘায়িত করে।

এছাড়াও লক্ষ করুন যে theণাত্মক চিহ্ন ( -)টি বিয়োগ চিহ্ন হিসাবে ব্যবহার করা উচিত নয়। এটি কেবল শূন্যের চেয়ে কম সংখ্যার প্রথম অক্ষর হিসাবে উপস্থিত হওয়া উচিত।

বিন্যাস করা

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

তালিকাগুলি যুক্তিসঙ্গত উপায়ে ফর্ম্যাট করা যায়, স্পেস, নিউলাইনস, কমা বা সংখ্যার মধ্যে সম্ভবত অন্য কোনও কিছু ব্যবহার করে যতক্ষণ জিনিস ধারাবাহিক থাকে। শীর্ষস্থানীয় এবং ট্রেলিং বন্ধনী (বা অনুরূপ) ঠিক আছে তবে সংখ্যার আশেপাশের উদ্ধৃতিগুলির মতো জিনিসগুলি নয়। (অর্থাত্ আউটপুটে দৃশ্যমান স্ট্রিং এবং ইনটস / ফ্লোটগুলি মিশ্রিত করবেন না))

উদাহরণস্বরূপ, যখন এন = 1, কিছু বৈধ আউটপুট হবে:

0 1 2 3 4 5 6 7 8 9
[1, 2, 3, 4, 5, 6, 7, 9, 0]
ans = { 5 8 9 1 3 2 0 3 4 7 6 }

তবে এটি অবৈধ হবে:

[0, 1, 2, 3, 4, "5", "6", "7", "8", "9"]

উদাহরণ

N = 1 -> 0 1 2 3 4 5 6 7 8 9

N = 2 -> -9 -8 -7 -6 -5 -4 -3 -2 -1 .1 .2 .3 .4 .5 .6 .7 .8 .9 10 11 12 ... 97 98 99

N = 3 -> -99 -98 ... -11 -10 -.9 -.8 ... -.2 -.1 .01 .02 ... .98 .99 1.1 1.2 ... 1.9 2.1 2.2 ... 2.9 3.1 ...... 9.9 100 101 ... 998 999

পাঠ্য সুবিধার জন্য কয়েকটি স্থানে উপবৃত্তাকার তালিকা রয়েছে as

স্কোরিং

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী। সম্পর্কের ক্ষেত্রে উচ্চতর ভোট দেওয়া উত্তর জিতবে


করা উচিত -0বৈধ আউটপুট হবে?
ডুরকনব

@ ডুরকনবAlso note that the negative sign (-) should not be used as a subtraction sign. It should only appear as the first character of numbers less than zero.
মেগো

@ মেগো হ্যাঁ Negativeণাত্মক শূন্য কি শূন্য থেকে পৃথক?
ডুরকনব

@ ডুরকনব শূন্যের চেয়ে শূন্য কি কম?
মেগো

@ ডুরকনব নং। মেগো কী বলেছে এবং এছাড়াও "[শূন্য] সবসময় সরল হিসাবে লেখা উচিত 0"।
ক্যালভিনের শখ

উত্তর:


2

পাইথ, 47 45 বাইট

ধন্যবাদ FryAmTheEggman জন্য লক্ষ যাতে কোন ব্যাপার না।

jf!sm:Td)c".- \..*\. ^-?0. [.-]0*$"d^{`c_T17Q

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

রানটাইমটি ভয়াবহ, মূলত ও (12 এন ), তবে আমি এটি nআমার কম্পিউটারে = 6 এর জন্য পরীক্ষা করেছি (যা 2 মিনিট সময় নিয়েছিল)। চলমান n≥ 5 হবে অনলাইন আউট সময়।

আমি যেভাবে অক্ষরগুলি তৈরি করি তার ফলে 0123456789.-আউটপুটটি সত্যই এক অদ্ভুত ক্রমে।

কেউ প্রযুক্তিগতভাবে {শেষের কাছাকাছিটি সরিয়ে ফেলতে পারে তবে এর ফলে O (19 এন ) এর জটিলতা তৈরি হবে । (এটি প্রচুর নকল তৈরি করতে পারে তবে এটি অনুমোদিত allowed)

ব্যাখ্যা

                  _T       -10
                 c  17     -10 / 17 = -0.5882352941176471
                `          representation: "-0.5882352941176471"
               {           uniquify: "-0.582394176"
              ^       Q    input'th Cartesian power
 f                         filter on:
         c"…"d               split this string by spaces
    m:Td)                    check if the parts match the current string
  !s                         true if none of the parts matched
j                            join by newlines

".- \..*\. ^-?0. [.-]0*$"কোডটির মূল অংশটি হ'ল এতে রেজিেক্সস রয়েছে যে কোনও আউটপুট মিলবে না

.-         minus must be first character
\..*\.     there may only be one decimal point
^-?0.      no extra leading zeroes
[.-]0*$    number must not end with decimal/minus and 0+ zeroes

3

পাইথ, 57 বাইট

j-f:T"^0$|^-?([1-9]\d*)?(\.\d*[1-9])?$"0{.P*Q+jkUT".-"Q\-

অনলাইন দোভাষীর উপর এটি ব্যবহার করে দেখুন

ওয়ে খুব দীর্ঘ এবং ভয়াবহ রানটাইম সহ (এন = 4 এর জন্য কয়েক সেকেন্ড সময় লাগে, এন = 5 দিয়ে চলার প্রস্তাব দেওয়া হয় না)।

            .P           Q    all permutations of length (input) of
                 jkUT         ... the string "0123456789"
                +    ".-"     ... plus the chars "." and "-"
              *Q              ... whole thing times the input -- pyth has
                              no repeated_permutation, so this is necessary
           {                  uniquify
  f                           filter by
   :T"..."0                   does it match the really long regex?
 -                        \-  get rid of "-"
j                             join on newline

রেজেক্স ব্যাখ্যা:

^0$|            "0", or...
^
 -?             optional negative sign
 ([1-9]\d*)?    optional part-before-decimal
 (\.\d*[1-9])?  optional part-after-decimal
$

1
গল্ফ নয়, তবে আমি মনে করি আপনি *Qনিজের ক্রম তৈরির জিনিসটি আগে রেখে দিতে +পারেন যাতে এটি কেবল অঙ্কগুলিকেই প্রভাবিত করে, এটি পারফরম্যান্সটিকে কিছুটা উন্নতি করতে পারে। এটি এমনকি রেজেক্সে কিছু বাইট সংরক্ষণ করতে পারে?
FryAmTheEggman

2

জুলিয়া, 126 117 বাইট

n->filter(i->ismatch(r"^0$|^-?([1-9]\d*)?(\.\d*[1-9])?$",i)&&i!="-",∪(map(join,combinations((".-"join(0:9))^n,n))))

এটি একটি ল্যাম্বদা ফাংশন যা একটি পূর্ণসংখ্যা গ্রহণ করে এবং একটি স্ট্রিংয়ের অ্যারে প্রদান করে। এটি কল করতে, এটি একটি ভেরিয়েবলের জন্য বরাদ্দ করুন। এখানে দৃষ্টিভঙ্গি ডোরকনব্বের পাইথ উত্তর হিসাবে একই ।

Ungolfed:

function g(n::Int)
    # Get all n-character combinations of .-0123456789
    c = combinations((".-"join(0:9))^n, n)

    # Join each group of n characters into a string and take unique
    u = ∪(map(join, c))

    # Filter to only appropriately formatted strings
    filter(i -> ismatch(r"^0$|^-?([1-9]\d*)?(\.\d*[1-9])?$", i) && i != "-", u)
end

1

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

45:57iZ^!"@!'^(-?(([1-9]\d*)|([1-9]\d*)?(\.\d*[1-9]))|0)$'XX

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

এটি সুপার ব্রুটে ফোর্স (কার্টেসিয়ান পাওয়ার মাধ্যমে) ব্যবহার করে এর পরে ফিল্টারিং করে (নিয়মিত অভিব্যক্তির মাধ্যমে)। আমি পরে একটি ব্যাখ্যা যোগ করব।

ফলাফল প্রোগ্রাম শেষে প্রদর্শিত হয়। এটি কিছুটা সময় নিতে পারে। আপনি ফলাফল দেখতে হিসাবে তারা তৈরি হয় চান, যোগ Dশেষে :

45:57iZ^!"@!'^(-?(([1-9]\d*)|([1-9]\d*)?(\.\d*[1-9]))|0)$'XXD
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.