আমার মতভেদ বলতে না


38

ইনপুট

একটি পূর্ণসংখ্যা n (≥ 1) এবং একটি অঙ্ক d (একটি পূর্ণসংখ্যা যেমন 0 ≤  d  ≤ 9)।

উভয় ক্রমে; স্টিডিন বা পরামিতি বা যা কিছু থেকে; একটি প্রোগ্রাম বা ফাংশন; প্রভৃতি

আউটপুট

1 থেকে ইন্টিজার এন সমেত (অনুক্রমে) যাদের দশমিক উপস্থাপনা একটি ধারণ এমনকি সংখ্যা গুলি। (এটি, তালিকার পূর্ণসংখ্যাগুলি যথাক্রমে সংখ্যাসমূহ, ডি সমান সংখ্যক সমষ্টি )

কোনও মানক বিন্যাসে, ইত্যাদি বিশেষত, আউটপুট দশমিক হিসাবে প্রতিনিধিত্ব করা প্রয়োজন।

যদি একক স্ট্রিং হিসাবে আউটপুট থাকে তবে পূর্ণসংখ্যাগুলি অবশ্যই কোনওভাবে আলাদা করতে হবে (স্পেস, কমা, নিউলাইনস, নাল বাইটস, যাই হোক না কেন)।

উদাহরণ

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

ধন্যবাদ

করতে quintopia শিরোনামের জন্য।


0 টি কি সমান সংখ্যা হিসাবে গণনা করে?
মিল্কিওয়ে 90

@ মিল্কিওয়ে 90 অবশ্যই
এমএস 210

উত্তর:


3

জেলি, 7 বাইট

RDċ€Ḃ¬T

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

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

RDċ€Ḃ¬T  Main link. Arguments: n, d

R        Range; yield [1, ..., n].
 D       Convert each integer in the range to base 10.
  ċ€     Count the occurrences of d in each array of decimal digits.
    Ḃ    Compute the parities.
     ¬   Negate, so even amounts evaluate to 1, odds to 0.
      T  Find all indices of truthy elements.

13

05 এ বি 1 ই , 11 10 বাইট

কোড:

\>GN¹¢ÈiN,

ব্যাখ্যা:

\           # Pop input, which saves the first input into ¹
 >          # Increment on second input
  G         # For N in range(1, input + 1)
   N        # Push N
    ¹       # Push the first input from the input register
     ¢      # Count the number of occurences of the digit in N
      È     # Is even?
       iN,  # If true, print N with a newline

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

ব্যবহার সিপি-1252 এনকোডিং।


Both উভয় যুক্তিকে স্ট্রিং হিসাবে ব্যাখ্যা করে?
স্পার

@ স্পার যা নির্ভর করে, এটি স্ট্রিংযুক্ত তালিকায়ও করা যেতে পারে। তবে এখানে, এটি উভয় যুক্তিকে স্ট্রিং হিসাবে ব্যাখ্যা করে।
আদনান

13

হাস্কেল, 69 63 52 50 বাইট

d#n=[i|i<-[1..n],even$sum[1|x<-show i,read[x]==d]]

আমার প্রথম পোস্টের জন্য সোজা সমাধান এখানে। এটি showএর সংখ্যা গণনা করতে ব্যবহার করে d। আমি স্পষ্টভাবে Charইনপুট হিসাবে ব্যবহার করি নি d, যা 12% (ড্যামিয়েন সম্পাদনার পরে) বাইট সংরক্ষণ করতে পারত ।

সম্পাদনা: ড্যামিয়েনকে 11 বাইট কম ধন্যবাদ! সম্পাদনা 2: নিমির প্রতি আরও 2 বাইট কম ধন্যবাদ!


2
আপনি একটি বোধগম্য তালিকা দ্বারা ফিল্টার প্রতিস্থাপন করতে পারেন: fdn = [i | i <- [1..n], এমনকি $ যোগ [1 | x <-দেখ i, পড়ুন [x] == d]]
দামিয়েন

12

বেফুঞ্জ, 1080 945 বাইট

vd>"000">" "v
&0      ^              p21-1+*68<
62            >        v
8           >-|        >12g68*-:|
*             >11g1+11p^        $
+                      v  <
5                         |%2g11<
5                      v.:<          
+         v            <        
0         >268*+12p68*11p"000"40p50p60pv
p
           v                             -1<
             v-g01p06+1g06<
>&         >:>:10g1-`     |            >:0`|
             v            <                @
             v-+55p05+1g05<      
             >:54+`       |
   v               p04+g04<
  ^          <                <      <
   >60g68*-0`|      >50g68*-0`|
             >" "60p^         >" "50p^

স্কোরটি দেওয়া হয়েছে যে আমরা নতুন লাইনগুলি সহ পুরো স্কোয়ারটি গণনা করি, যা বোঝা যায়। আপনি ইন্টারপিটারে কোডটি পেস্ট করতে পারবেন । দুটি ইনপুট সরবরাহ করুন, প্রথম ডি এবং তারপরে এন । এই সমাধানটি n > 999 এর চেয়ে বড় মানের জন্য কাজ করে না ।

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

ব্যাখ্যার চেষ্টা:

প্রথম কলামে নীচের দিকে আমরা ইনপুট থেকে একটি পূর্ণসংখ্যা পড়ি, এটি সম্পর্কিত ASCII মানতে রূপান্তর করতে এবং এটিতে রাখার জন্য 48 (6 * 8, আপনি এটি আরও প্রায়শই দেখতে পাবেন) যুক্ত করুন (10, 0)

& - ইনপুট পড়ুন

68*+ - 48 যোগ করুন

55+0p - মান রাখুন (10, 0)

লক্ষ্য করুন d(1, 0)শুধু স্ট্যাক সংখ্যা 100 পেতে একটি সহজ উপায়।

এর পরে, আমরা পূর্ব দিকে গিয়ে অন্য একটি পূর্ণসংখ্যা পড়ি এবং আমি যাকে ASCIIfier বলি তার দিকে এগিয়ে যাই। এটি বর্তমান নম্বরটিকে ASCII অক্ষরের একটি সিরিজে পরিণত করে। ASCIIfier থেকে আয়তক্ষেত্রাকার টুকরা (13, 12)করার (26, 17)। এটি দুটি লুপগুলি নিয়ে গঠিত, প্রথমে শূন্যস্থানগুলি এবং দশকের তুলনায় গণনা করা এবং এটিকে তিনটি সংখ্যায় (6, 0)এবং এগুলি করা (5, 0)। এর পরে শেষ অঙ্কটি করা হয় (4, 0)। সুতরাং সংখ্যাগুলি আসলে বিপরীতে।

v-g01p06+1g06< - increment the "hunderds counter" located at (0, 6) and decrease current value by 100
>:10g1-`     | - ASCIIfier entry; check if the current value is > 99, if so, go up, else go down
v            < - go to start of "tens counter"
v-+55p05+1g05< - increment the "tens counter" located at (0, 5) and decrease current value by 10
>:54+`       | - check if current value is > 9, if so, go up, else go down
      p04+g04< - put the final value into the "singles counter" located at (0, 4)

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

তারপরে আমরা উত্তর দিকে সমস্ত পথে ফিরে যাই, যেখানে আমরা তিনটি সংখ্যা স্ট্যাকের উপরে রেখেছি। আমরা উপরের লুপের তিনটি অঙ্কের উপরে পুনরাবৃত্তি করি, প্রতিটি সময় বর্তমানের অঙ্কটি (1, 1)ইনপুট d এর সাথে সামঞ্জস্য করে এমন অবস্থিত অবস্থিত কাউন্টারটিকে বাড়িয়ে তোলে

এটি হয়ে গেলে আমরা গিয়ে দেখেছি যে কাউন্টারটি অবস্থিত (1, 1)এটি কাউন্টটি বিজোড় বা এমনকি কিনা। যদি এটি সমান হয় তবে আমরা বর্তমান সংখ্যাটিকে আউটপুট দেব এবং বর্তমান মান হ্রাস করতে আবার বহিরাগত লুপের দিকে এগিয়ে যাই again


আপনার যদি সময় থাকে তবে দয়া করে একটি ব্যাখ্যা পোস্ট করুন!
একটি সিমন্স

আমি একটি বিবরণে একটি প্রচেষ্টা যোগ করেছি .. জানতে পেরেছি যে এটি পরিষ্কার করা এত সহজ ছিল না ... আরও জিজ্ঞাসা করতে দ্বিধা করবেন না ...
rael_kid

যাইহোক, আমি কেবলমাত্র আমার ফলাফলটি আরোহণের ক্রমানুসারে আউটপুট করতে হবে, যা এটি প্রয়োজনীয়তার তুলনায় আরও বেশি
অপ্রয়োজনীয়

একটি কাজের বেফঞ্জ উত্তরের জন্য সর্বদা +1! বিটিডাব্লু, এটি কি সত্যই 945 বাইট? এটি 679 বলে
লুইস মেন্ডো

হি হি ধন্যবাদ. আমি 945 গণনা করেছি কারণ আমি 21 লাইনের x 45 কলামগুলির সম্পূর্ণ স্কোয়ারটি নিয়েছি (
নিউলাইনগুলি

7

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

f=lambda d,n:n*[0]and f(d,n-1)+~`n`.count(d)%2*[n]

একটি পুনরাবৃত্ত ফাংশন যা অঙ্কটিকে dস্ট্রিং হিসাবে এবং উপরের সীমাটিকে nএকটি সংখ্যা হিসাবে নেয় ।

ডিজিটের গণনা d's nএমনকি এটা বিট সম্পূরক মডিউল 2, যা দেয় গ্রহণ করে হতে পরীক্ষা করা হয় 1এমনকি এবং 0বিজোড় জন্য। এই অনেকগুলি nতালিকায় যুক্ত হচ্ছে, এবং ফাংশনটি পুনরাবৃত্তি হবে n-1, যখন খালি তালিকায় লজিক্যাল শর্ট সার্কিট দিয়ে থামবে n==0

যদি আউটপুট হ্রাসমান ক্রমে দেওয়া যেতে পারে তবে 49 বাইটের জন্য একটি বাইট সংরক্ষণ করা যায়:

f=lambda d,n:n*[0]and~`n`.count(d)%2*[n]+f(d,n-1)

পুরানো 51-বাইট সমাধান:

lambda d,n:[x+1for x in range(n)if~`~x`.count(d)&1]

একটি বেনামে ফাংশন যা অঙ্কটিকে dস্ট্রিং হিসাবে এবং উপরের সীমাটিকে nএকটি সংখ্যা হিসাবে নেয় ।

দুটি কৌশল ব্যবহৃত হয়:

  • পাইথনগুলি rangeশূন্য-সূচকযুক্ত 0...n-1, তাই আমরা প্রতিটি সম্ভাব্য মানটিতে একটি যুক্ত করি x। তারপর, গণনা d's x+1, এটা তার অস্বীকৃতি ব্যবহার করার জন্য একটি চরিত্র সংরক্ষণ ~xপরিবর্তে।
  • এমনকি মানগুলির জন্য ফিল্টার করতে, আমরা এটি করি ~_%2যা প্যারিটি পরিবর্তন করতে প্রথমে বিট-ফ্লপ হয়, তারপরে সর্বশেষ বিটটি এখানে &1( %2এখানে একইভাবে ) নিয়ে যায়, শুধুমাত্র যদি আসলটি হয় তবে সত্যবাদী মান তৈরি করা হয়।


4

লুয়া, 86 বাইট

যদি বেমানান বিভাজক ব্যবহারের অনুমতি দেওয়া হয় তবে আমি এর io.writeদ্বারা প্রতিস্থাপন করতে পারি print, মানে সংখ্যাগুলি এক বা একাধিক নিউলাইন দ্বারা আলাদা করা হবে।

এই পুরো প্রোগ্রাম, যা এই মত বলা যেতে করতে হবে তা হল lua file.lua d n

এটি dবর্তমান নম্বর থেকে সমস্ত অ- চরিত্রকে সরিয়ে দেয় এবং ফলস্বরূপ স্ট্রিংয়ের আকারটি ব্যবহার করে আমাদের সিদ্ধান্ত নেওয়া হয় যে এটি হয় বা না হয়।

for i=1,0+arg[2]do io.write(#(i..''):gsub("[^"..arg[1].."]","")%2<1 and i.." "or"")end

4

জাভাস্ক্রিপ্ট (ES6) 64

কনসোল আউটপুট সহ একটি বেনামি ফাংশন। splitঅঙ্কগুলি গণনা করার জন্য সরাসরি বাস্তবায়ন ।

(d,n)=>{for(i=0;i++<n;)(i+'').split(d).length&1&&console.log(i)}

আউটপুট ব্যবহার করে alert6 বাইট কম হবে, তবে আমি সত্যিই এটি পছন্দ করি না (এবং আমি খেলনা ভাষাগুলি যেভাবেই হারাতে চাই না)


4

এমএটিএল , 12 10 বাইট

:!V!=s2\~f

প্রথম ইনপুট এন , দ্বিতীয় হয় একটি স্ট্রিং হিসাবে। উদাহরণ স্বরূপ:

12
'1'

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

:       % implicitly take input n (number). Generate row vector [1,2,...,n]
!       % transpose into column vector
V       % convert each number to string. Gives 2D char array padded with spaces
!       % transpose
=       % implicitly take input d (string). Compare with each element of the array
s       % sum of each column: number of coincidences with d
2\~     % true for even values
f       % find indices of true values. Implicitly display

4

রুবি, 47 42 বাইট

?1.upto $*[1]{|s|s.count($*[0])%2<1&&p(s)}

কমান্ড-লাইন প্যারামিটার হিসাবে d এবং n দিয়ে চালান eg

ruby golf.rb 1 12

2
দুর্দান্ত প্রথম উত্তর! পিপিসিজিতে আপনাকে স্বাগতম! : D
mbomb007

সাবাশ! রুবি 1.9+, আপনি ব্যবহার করতে পারেন ?1জন্য "1"। এবং এটি এর চেয়ে কম সুন্দর, তবে একটি বাইট সংক্ষিপ্ত%2>0.odd?
করণীয়

4

পাওয়ারশেল, 62 55

param($1,$2);1..$2|?{!(([char[]]"$_"-match$1).Count%2)}

সম্পাদনা: এই ক্ষেত্রে একটি প্যারাম ব্লক ব্যবহার করা সংক্ষিপ্ত। কিছু অপ্রয়োজনীয় স্থান সরানো হয়েছে


গল্ফ করার ভাষা নয় তবে এটি কেবলমাত্র আমি জানি। এটি স্ক্রিপ্ট হিসাবে সংরক্ষণ করা এবং এই জাতীয় কল হিসাবে কাজ করবে M:\Scripts\cgNeverTellMeTheOdds.ps1 1 12। প্রথম যুক্তি হ'ল ডিজিট ডি এবং দ্বিতীয়টি হল পূর্ণসংখ্যা এন

1 থেকে n এর অ্যারে তৈরি করুন । যারা একে অপরের জন্য একটি অক্ষর অ্যারে রূপান্তর। 10 হবে 1,0। -matchঅ্যারে অপারেটর হিসাবে ব্যবহার করে অঙ্কের সাথে মেলে এমন সমস্ত উপাদান ফিরে আসে । ফিরে আসা উপাদানগুলির পরিমাণ এবং মোড 2 ফলাফল গণনা করুন। ফলাফল সমান জন্য 0 এবং বিজোড় 1 হবে। 0 বুলিয়ান মিথ্যা বলে তাই আমরা !লুপটির জন্য বিজোড় ফলাফলগুলি মিথ্যা এবং এমনকি সত্যের ফলাফলের মূল্যায়নের জন্য ব্যবহার করি ।

আউটপুট কনসোলে ডিলিট করা একটি নতুন লাইন।


পিপিসিজিতে স্বাগতম, প্রথম প্রথম উত্তর! :)
FryAmTheEggman

পছন্দ করুন নোডের জন্য ধন্যবাদ। আমি যদিও এটি অন্যান্য সমস্ত উত্তর অধীন সমাধি হবে।
ম্যাট

3

রেটিনা , 99 105 বাইট

চলমান স্থানগুলি নোট করুন। <empty>একটি খালি লাইন প্রতিনিধিত্ব করে।

\d+$
$*
+`^(. )(1*)1\b
$1$2 1$2
1+
$.0
+`^(.)(.*) ((?!\1)\d)*\1((?!\1)\d|(\1)((?!\1)\d)*\1)*\b
$1$2
^.  
<empty>

ইনপুট লাগে 1 12। আউটপুট হ্রাস ক্রমে পৃথক স্থান।

আমি 0*1(0|10*1)*সংখ্যার সাথে একটি বিজোড় সংখ্যার সাথে মেলে পরিবর্তন করেছি \1। আমি পরিবর্তন 0করতে (?!\1)\d, এবং 1থেকে\1 দীর্ঘ Regex লাইন আপনি উপরে দেখুন তৈরি করুন। লিঙ্কযুক্ত রেজেক্স কীভাবে কাজ করে তা বোঝা অত্যন্ত গুরুত্বপূর্ণ।

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

পুরানো সংস্করণ ব্যাখ্যা মন্তব্য

অবতরণ অর্ডার ঠিক থাকলে

\d+$            Convert last number N to unary
$*
+`1(1*)$        Create list N N-1 ... 1 in unary
$0 $1
 (1)+           Convert back to decimal
 $#1
+`^(.)(.*) ((?!\1)\d)*\1((?!\1)\d|(\1)((?!\1)\d)*\1)*   Remove numbers w/ odd num of D's
$1$2 
^.              Remove first parameter
<empty>

1
আপনি ইউনারি থেকে দশমিক রূপান্তর করতে 1+এবং ব্যবহার করতে পারেন can $.0
FryAmTheEggman

3

বাশ + জিএনইউ ইউটিলিটিস, 37

  • 1 রাইট রূডকে ধন্যবাদ 1 বাইট সংরক্ষণ করা হয়েছে।
seq $1|egrep "^[^$2]*($2[^$2]*){2}*$"

*নিম্নলিখিত খোলার প্রথম বন্ধনী অপ্রয়োজনীয় বলে মনে হচ্ছে। এটি সরিয়ে ফেললে আপনার 1 বাইট সাশ্রয় হয়।
রুড হেল্ডারম্যান

@ রুদ হ্যাঁ - ধন্যবাদ - এখনই ঠিক করা হয়েছে।
ডিজিটাল ট্রমা

3

পাইথন 3.4, 92 85 79 85 বাইট

মেগোর জন্য 7 বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে
আরও 6 বাইট এমবিম্ব007-এর জন্য সংরক্ষণ করা
কারণ পাইথন 3.x ঐ 6 বাইট ফিরলে

কোড গল্ফে এটি আমার প্রথম শট, তাই এখানে কিছুই যায় না!

lambda n,d:[i for i in range(n+1)if len([j for j in list(str(i))if j==str(d)])%2is 0]

1
এটিতে আপনি কয়েকটি জায়গা সরাতে পারবেন। এছাড়াও, আপনি যদি এটি একটি নামবিহীন ল্যাম্বদা করেন তবে তা যথেষ্ট সংক্ষিপ্ত হবে।
মেগো

আপনি এর `d`পরিবর্তে ব্যবহার করতে পারেন str(d)এবং আপনি যদি ধরে নেন যে এটি হল একটি পূর্ণসংখ্যা (<2 ** 32), আপনি এর `i`পরিবর্তে ব্যবহার করতে পারেন str(i)
mbomb007

স্ট্র () এর জন্য কি ব্যাকটিক্স শর্টহ্যান্ড?
নাকান

1
ব্যাকটিকগুলি __repr__অজগর 2 এ সংক্ষিপ্তকরণ ছিল, সেগুলি অজগর 3 এ সরানো হয়েছিল that এই সীমাবদ্ধতা প্রতিফলিত করার জন্য আপনার সম্ভবত শিরোনাম পরিবর্তন করা উচিত।
FryAmTheEggman

হ্যাঁ, আমি কেবল খুঁজে পেয়েছিলাম যে কাছাকাছি খনন করার সময় এবং দোভাষীতে একটি পরীক্ষার কেস ছুঁড়ে ফেলার সময়। গোমরা মুখ.
নাকান


2

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

:1reIlL,"":Ic:.xl-L=%2=0,Iw,@Sw\

এনপুট হিসাবে এন এবং আউটপুট হিসাবে অঙ্ক আশা করে, যেমন brachylog_main(12,1).

ব্যাখ্যা

:1reI                            § I is a number between 1 and Input
     lL,                         § L is the length of I
        "":Ic                    § Convert I to a string
             :.x                 § Remove all occurences of Output in that string
                l-L=%2=0,        § Check that the length of that new string - L mod 2 is 0
                         Iw,@Sw  § Write I, then write a space
                               \ § Backtrack (i.e. try a new value of I)


2

পার্ল, 28 29 31 বাইট

জন্য +2 অন্তর্ভুক্ত -an

স্পেসিফিকেশন অঙ্ক সহ চালনা করুন এবং STDIN এ পরপর রেখায় গণনা করুন:

echo -e "0\n111" | perl -anE'map s/@F/$&/g%2||say,1..<>'

2

ওরাকল এসকিউএল 11.2, 111 82 বাইট

SELECT LEVEL FROM DUAL WHERE MOD(REGEXP_COUNT(LEVEL,:d),2)=0 CONNECT BY LEVEL<=:n;


2

জাভা 8, 84 বাইট

এটি একটি এর জন্য ল্যাম্বডা এক্সপ্রেশন BiConsumer< Integer, Integer>:

(d,n)->for(int x=0;x++<n;)if((""+x).split(""+d,-1).length%2>0)System.out.println(x);

ব্যাখ্যা:

1 এবং n এর মধ্যে প্রতিটি সংখ্যার জন্য, সংখ্যাটিকে একটি স্ট্রিতে রূপান্তর করুন এবং ডিলিমেটার হিসাবে ডি ব্যবহার করে বিভক্ত করুন। যদি এটি একটি বিজোড় সংখ্যায় বিভাগে বিভক্ত হয়, তবে একটি নতুন রেখার পরে নম্বরটি মুদ্রণ করুন।


2

রেটিনা, 72 71 55

\d+$
$*
\B
¶$`
1+
$.0
G`(.),((?>.*?\1){2})*(?!.*\1)
.,
<empty>

মার্টিনকে অনেক ধন্যবাদ, যিনি পুরোপুরি দুর্ঘটনাক্রমে আমাকে পরমাণু মিলের দলগুলির কথা মনে করিয়ে দিয়েছিলেন!

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

ব্যাখ্যা:

\d+$
$*

সংখ্যাটি পরিবর্তন করুন, তবে অঙ্কটি নয়, এর অখণ্ড সমতুল্য সহ।

\B
¶$`

\Bপ্রতিটি পজিশনের সাথে (শূন্য-প্রস্থ) মেলে যা শব্দের সীমানা নয়। নোট করুন যে এটি নিম্নলিখিত কোনওটির সাথে মেলে না: স্ট্রিংয়ের শুরু, স্ট্রিংয়ের শেষ বা কমা চরিত্রের চারপাশের কোনও অবস্থান। এই অ-বাউন্ডারিগুলির প্রত্যেকটির পরে একটি নতুন লাইন এবং তারপরে স্ট্রিংটি ম্যাচের ( $`) আগে আসে with এটি এর মতো একটি তালিকা দেয়:

d,1
d,11
d,111

যেখানে dকোনও একক দশমিক সংখ্যা।

1+
$.0

এটি এর সমস্ত তালিকা 1তাদের দৈর্ঘ্যের দশমিক প্রতিনিধিত্বতে রূপান্তর করে। এটি সুবিধামত প্রভাব ফেলবে না 1যা কমা এর আগে হতে পারে কারণ এটি এর দৈর্ঘ্য সর্বদা 1পাশাপাশি।

G`(.),((?>.*?\1){2})*(?!.*\1)

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

এখানে মূল কথাটি হ'ল এটি যদি অঙ্কের দুটি প্রথম দিকের উপস্থিতি পর্যন্ত অ-লোভী ম্যাচটি ব্যবহার করার সময় ব্যর্থ হয় তবে এটি কেবল ফিরে গিয়ে আবার চেষ্টা করবে এবং অঙ্কটির সাথে .মিল রেখে আবার চেষ্টা করবে। এটি যখন আমাদের অঙ্ক 1 হবে তখন এটি 111 ম্যাচের মতো সংখ্যা তৈরি করবে Therefore সুতরাং, আমরা ?>ম্যাচটিকে পারমাণবিক করতে ব্যবহার করি , মূলত রেগেক্সকে এই মানটির সাথে মিলে যাওয়ার আগে ব্যাকট্র্যাকিং করা থেকে বিরত করে। একটি পারমাণবিক ম্যাচ কিছু ধরণের স্বাদে পছন্দসই ম্যাচিংয়ের মতো কাজ করে । যেহেতু *মেটা-অক্ষর একটি দ্বারা অনুসরণ করা হয়?. অক্ষর মেলে থাকবে যতক্ষন না এটি মেলে কি আমরা সংরক্ষণ সক্ষম হয় \1। তারপরে একবার আমরা দু'বার এটি করার পরে, নিয়মিত অভিব্যক্তির "স্মৃতি" নষ্ট হয়ে যায়, সাধারণত যে আচরণটি ঘটে তা প্রতিরোধ করে, যেখানে এটি ফিরে যায় এবং রয়েছে.একটি অতিরিক্ত অক্ষর, আমাদের \1অঙ্ক, যা অবৈধ ম্যাচ তৈরি করবে সাথে মেলে।

তারপরে, আমরা চেক করি যে চূড়ান্ত অবস্থান থেকে, ইনপুট অঙ্কের দু'এর পুনরাবৃত্ত গোষ্ঠীর সাথে মিল রেখে আমরা অন্য ইনপুট অঙ্কের সাথে মেলে না।

.,
<empty>

এখানে আমরা প্রতিটি স্ট্রিং থেকে কেবল ডিজিট এবং কমা সরিয়ে দিচ্ছি, সুতরাং আমরা আমাদের সুন্দর উত্তরটি পেয়েছি।


দয়া করে একটি ব্যাখ্যা যুক্ত করুন।
mbomb007

@ mbomb007 ঠিক আছে, যোগ করেছেন :)
FryAmTheEggman

পারমাণবিক মিল এমন কিছু যা আমি এখনও বুঝতে পারি না।
mbomb007

@ mbomb007 আমি কী চলছে তা পরিষ্কার করার চেষ্টা করেছি, যদি কিছু অস্পষ্ট হয়ে দাঁড়িয়ে থাকে তবে আমাকে জানান।
FryAmTheEggman

1

পাইথন 2, 57 54 বাইট

lambda d,n:[i for i in range(1,n+1)if`i`.count(d)%2<1]

ব্যবহার

>>> (lambda d,n:[i for i in range(1,n+1)if`i`.count(d)%2<1])('1', 12)
[2, 3, 4, 5, 6, 7, 8, 9, 11]

1

জুলিয়া, 44 বাইট

f(n,d)=filter(i->sum(d.==digits(i))%2<1,1:n)

এটি এমন একটি ফাংশন যা দুটি পূর্ণসংখ্যা গ্রহণ করে এবং একটি অ্যারে প্রদান করে।

আমরা 1 থেকে শুরু করে পূর্ণসংখ্যার সেট দিয়ে শুরু করি n। প্রতিটি পূর্ণসংখ্যার জন্য i, আমরা নির্ধারণ করি যে এর দশমিক সংখ্যাগুলির সমান dকোনটি বুলিয়ান অ্যারে দেয়। আমরা sumএই ঘটনার সংখ্যা পেতে dএকটি সংখ্যা হিসাবে i, এবং filterসমষ্টি সমতা উপর ভিত্তি করে মূল পরিসীমা।

এখানে চেষ্টা করুন


1

সিরিয়াসলি, 17 বাইট

╩╜R;`$╛@c2@%Y`M@░

ইনপুট গ্রহণ করে n\n'd'(পূর্ণসংখ্যা, নিউলাইন, স্ট্রিং)।

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

ব্যাখ্যা:

╩╜R;`$╛@c2@%Y`M@░
╩                  push all inputs to registers
 ╜R;               push two copies of range(1, n+1)
    `        `M    map:
     $╛@c            count the number of d's
         2@%Y        modulo 2, logical not (1 if even, 0 if odd)
               @░  filter: take only the values of range(1, n+1) where the count is even

1

গণিত, 45 বাইট

Select[a=#2;Range@#,2∣DigitCount[#,10,a]&]&

অন্তর্নির্মিত ব্যবহার করে DigitCount


1

জাপট, 13 12 বাইট

Uò1 f_s èV v

ইনপুট এন হয় , তারপরে ডি উদ্ধৃতিতে মোড়ানো এটি অনলাইন পরীক্ষা!

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

       // Implicit: U = input integer, V = input string
Uò1    // Create the inclusive range [1..U].
f_     // Filter to only the items Z that return truthily to this function:
s èV   //  Take Z.toString(), then count the number of matches of V.
v      //  Return 1 (truthy) if even, 0 (falsy) otherwise.
       // Implicit output, array separated by commas

1

সিজেম, 38 বাইট

r:P;r~1+,0-_{s{s}%Pe=2%!}%]z{~{}{;}?}%

ব্যাখ্যা

r:P;                                    e# set input d to variable P
    r~1+,0-                             e# create a range(1, n+1)
           _{s{s}%Pe=2%!}%              e# determine which numbers are needed
                          ]z{~{}{;}?}%  e# remove extra numbers


1

আর, 145 বাইট (আমি নিশ্চিত এটি আরও ছোট করার উপায় আছে) :)

g<-sapply(sprintf("%s",seq(1:111)),function(z){if(sapply(regmatches(z,gregexpr("0",z)),length)%%2==0){z}else{NULL}})
names(g[!sapply(g,is.null)])
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.