আমার কয়টি কার্ডবোর্ডের অঙ্কের প্রয়োজন?


32

কিছু নম্বর ( উদাহরণ ) প্রদর্শনের জন্য আমাকে কার্ডবোর্ডের তৈরি ডিজিটগুলি প্রস্তুত করতে হবে । আমার আগে কোন সংখ্যাটি প্রদর্শন করা উচিত তা আমি জানি না - কেবলমাত্র আমি জানি যে এটি এর চেয়ে বেশি নয় n

আমার কতটি কার্ডবোর্ডের সংখ্যা প্রস্তুত করা উচিত?

উদাহরণ: n = 50

0 ... 50 সীমাতে যে কোনও সংখ্যা প্রদর্শন করতে আমার নিম্নলিখিত সংখ্যার প্রয়োজন:

  1. 0 নম্বর বা অন্য কোনও গোলাকার সংখ্যা প্রদর্শন করার জন্য একটি শূন্য
  2. সংশ্লিষ্ট সংখ্যা প্রদর্শনের জন্য 1, 2, 3 এবং 4 অঙ্কের দুটি কপি
  3. 5, 6, 7 এবং 8 সংখ্যার একটি অনুলিপি, ক্ষেত্রে তারা সংখ্যায় কমপক্ষে উল্লেখযোগ্য অঙ্ক হিসাবে উপস্থিত হয়
  4. অঙ্ক 9 কখনই প্রয়োজন হয় না, কারণ আমি পরিবর্তে উল্টানো অঙ্ক 6 ব্যবহার করতে পারি

মোট: 13 টি সংখ্যা

পরীক্ষার কেস (প্রতিটি লাইন "ইনপুট; আউটপুট" ফর্ম্যাটে একটি পরীক্ষার কেস)

0 1
1 2
9 9
11 10
50 13
99 17
100 18
135 19
531 22
1000 27
8192 34
32767 38

2
6/9 ছাড়াও অন্য কোনও অঙ্ক ঘোরানো যেতে পারে?
ফেয়ারসুম

না (উদাহরণ দেখুন)
অ্যানাটলিগ

সুতরাং দুটি 1 এর 7 টি তৈরির জন্য
ওভারলাইড

2
... এবং দুটি শূন্য 8 তৈরি করতে পারে না That এটি কুশ্রী হবে।
অ্যানাটলিগ

সম্ভবত একটি বিশ্রী প্রশ্ন, কিন্তু এগুলি 'কার্ডবোর্ড' অঙ্কগুলি হ'ল, এগুলি কী মোট প্রয়োজনীয়তে সঞ্চয় করতে দ্বিগুণ প্রিন্ট করা যায়? উদাহরণস্বরূপ, আপনার কখনই 6 এবং 0 একসাথে প্রয়োজন হবে না।
ওয়েকার ই।

উত্তর:


16

জেলি , 9 বাইট

‘ḶDœ|/ḟ9L

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

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

‘ḶDœ|/ḟ9L
‘Ḷ         [0,1,...,n]
  D        convert each to list of its digits
   œ|/     fold by multiset union
      ḟ9   remove 9
        L  length

14
খুব দ্রুত> <<শপথ, মহাবিশ্বের প্রতিটি জ্ঞাত চ্যালেঞ্জের জন্য আপনার কাছে জেলি উত্তর রয়েছে এবং চ্যালেঞ্জের পরে ঠিক সেগুলি পোস্ট করার জন্য আপনার কাছে বট রয়েছে। : পি ভাল উত্তর।
হাইপার নিউট্রিনো

10
@ হাইপারনিট্রিনো আমার ধারণা বট চ্যালেঞ্জ থেকে টেস্টকেসগুলি বের করে এবং সুপার কম্পিউটার ব্যবহার করে প্রতিটি সম্ভাব্য জেলি প্রোগ্রাম চেষ্টা করে।
নিডজেজেকোব

1
@ হাইপারনিট্রিনো আপনি অনুভূতিটি জানেন ... বিশেষত যদি আপনার সমাধান হয় 0rDŒr€ẎQṪÞẎḟ9ĠẎL
এরিক আউটগল্ফার

আমি এক মুহুর্তের জন্য ḟ9 অংশের বৈধতা নিয়ে সন্দেহ করেছিলাম, তখন আমি বুঝতে পেরেছিলাম <<9 সুতরাং 6 সংখ্যার সংখ্যা প্রতিটি সংমিশ্রমে সংযুক্ত 6s এবং 9 এর মোট সম্ভাব্য সংখ্যার চেয়ে কম হতে পারে না।
নাদের ঘানবাড়ি

7

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

lambda n:9*len(`n`)-9+(n*9+8)/10**len(`n`)+(n<10)

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

একটি আনাড়ি গণিত সূত্র। ধরে নিন যে এটি nকোনওটির মধ্যে ফিট করে intযাতে একটি Lসংযুক্ত থাকে না।

9 টি অপব্যবহারের n*9+8পরিবর্তে না করে হ্যান্ডেল করা যায় বলে ইনিশ করে 5 বাট সাশ্রয় করার জন্য নীলকে ধন্যবাদ জানাই n*9+9, যাতে বলুন, 999*9+8=89999000-র উপরে না যায়।


@ovs যেটি বেশ কার্যকর নয়, প্রথম সংখ্যাটি জানা যথেষ্ট নয়। উদাহরণস্বরূপ 33333পাঁচ পাঁচটি প্রয়োজন তবে 22222কেবল চারটি প্রয়োজন। n*9[0] লোভনীয়, তবে এটির 1চেয়ে কম সংখ্যার জন্য ব্যর্থ হয় 111..
xnor

আমার গণনা দ্বারা (আমার ব্যাচের উত্তর দেখুন) আপনি সম্ভবত ব্যবহার (n*9+8)/10**len(`n`)এড়াতে ব্যবহার করতে পারেন min
নীল

7

হাস্কেল , 117 114 108 95 89 88 87 84 82 63 বাইট

লাইকোনিকে ধন্যবাদ 6 টি বাইট সংরক্ষণ করলেন

নিমিকে ধন্যবাদ 1 4 6 বাইট সংরক্ষণ করা

g x=sum[maximum[sum[1|u<-show y,d==u]|y<-[0..x]]|d<-['0'..'8']]

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


3
1.) maximum[a,b]হিসাবে একই max a b। ২) তালিকার বোধগম্যতা প্রায়শই কম হয় filter:max d$sum[1|x<-show a,x==b]
লাইকনি

1
আপনি প্রতিস্থাপন করতে পারেন gএকটি pointfree ফাংশন আক্ষরিক সঙ্গে sum.(#[-9..])
নিমি

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

1
... এবং length[x|x<-...]হয় sum[1|x<-...]
নিমি

1
ফাংশনগুলি নামবিহীন হতে পারে, সুতরাং এর প্রয়োজন নেই g=(তবে সম্ভবত আপনি এটি টিআইও সংস্করণে অন্তর্ভুক্ত করতে চান)।
নিমি

5

গণিত, 49 বাইট

Tr@Delete[Max~MapThread~DigitCount@Range[0,#],9]&

চমৎকার! এটি কি আমার উত্তরের ভিত্তিতে?
J42161217

5

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

f=(n,i=9)=>n>(i%9+1+"e"+(i/9|0))/9-1?1+f(n,-~i):n>9^1

এক ধরণের হ্যাকি পুনরাবৃত্তির সমাধান। এটি এমন একটি সংখ্যা তৈরি করে যার জন্য একটি সংখ্যা যুক্ত করার প্রয়োজন:

1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 22, 33, 44, 55, 66, 77, 88, 100, 111, 222, ...

এবং তারপরে ইনপুটটির চেয়ে কত কম তা গণনা করে। একটি সুখী অলৌকিক ঘটনা দ্বারা, অঙ্কটি সরিয়ে ফাংশন থেকে 9আসলে বেশ কয়েকটি বাইট সরিয়ে দেয় , কারণ ক্রমটি এর পরে যেমন তৈরি করা যেতে পারে (পূর্ণসংখ্যা বিভাগ ধরে):

1e1 / 9 = 1, 2e1 / 9 = 2, ..., 8e1 / 9 = 8, 9e1 / 9 = 10, 1e2 / 9 = 11, 2e2 / 9 = 22, ...

আমাদের এই সত্যটি 10 ​​বছরের নিচে সংখ্যার শূন্যের প্রয়োজনের বিষয়টি বিবেচনা করতে হবে, তবে n > 9 ? 0 : 1এটি ফলাফলকে যুক্ত করার মতোই সহজ ।

পরীক্ষার মামলা


n>9^1সম্ভবত হতে পারেn<10
ক্যালকুলেটরফলাইন

@ ক্যালকুলেটরফলাইন ওয়েল, এটি trueইনপুট দেয় 0, তাই আমি এটি করতে একটু দ্বিধা বোধ করছি।
ETH প্রোডাকশনগুলি

0>9মিথ্যা, false^11 ...?
ক্যালকুলেটরফলাইন

@ ক্যালকুলেটরফলাইন হ্যাঁ, আমি বলছি আমি সংখ্যার জায়গায় বুলিয়ান আউটপুট দিতে দ্বিধা বোধ করছি । true1
ETH প্রোডাকশনগুলি

4

ব্যাচ, 67 বাইট

@if %1 geq 10%2 %0 %1 0%2 -~%3
@cmd/cset/a(%1*9+8)/10%2+9*%30+!%30

এই সমস্যার স্ট্যান্ডার্ড গঠনের ক্ষেত্রে আপনার পৃথক 6এবং 9অঙ্ক দরকার তবে আপনাকে প্রদর্শন করার দরকার নেই 0nপ্রয়োজনীয় সর্বাধিক মান বাড়ার সাথে সাথে আপনি যখন কোনও পুনঃ ডিজিট ডিজিটায় পৌঁছান তখন প্রয়োজনীয় সংখ্যার সংখ্যা বৃদ্ধি পায় (কারণ আপনার কাছে সেই সংখ্যাটির যথেষ্ট পরিমাণ নেই) এবং প্রতিবার আপনি 10যখন একটি অতিরিক্ত শূন্যের প্রয়োজন হয় তখন একটি পাওয়ারে পৌঁছান । মোট প্রতিটি পাওয়ারের আগেরটির চেয়ে আরও বেশি সংখ্যার 10প্রয়োজন 10, যা হিসাবে গণনা করা যেতে পারে floor(log10(n))*10n10 এর ক্ষমতার মধ্যে মানের মানগুলির জন্য , মধ্যবর্তী পুনঃ ডিজিটগুলির সংখ্যা তখন floor(n/((10**floor(log10(n))*10-1)/9))বা বিকল্প হিসাবে গণনা করা যেতে পারে floor(n*9/(10**floor(log10(n))*10-1))

আমি floor(log10(n))প্রথম লাইনে লুপের মাধ্যমে গণনা করি । প্রতিটি সময়, %2একটি অতিরিক্ত লাভ 0এবং %3একটি অতিরিক্ত লাভ -~। এর অর্থ 10%2হ'ল 10*10**floor(log10(n))%30আছে floor(log10(n))

এর অনুলিপি 6এবং 9এর দুটি প্রভাব রয়েছে: প্রথমত, 9প্রতিটি পাওয়ারের জন্য কেবলমাত্র সংখ্যাগুলি প্রয়োজন হয় 10এবং দ্বিতীয়ত, পুনরুক্তি সনাক্তকরণের পুনরায় 9ডিজিটগুলি উপেক্ষা করা দরকার । ভাগ্যক্রমে যেহেতু তারা 10 পাওয়ার চেয়ে কম তবে এটি সূত্রটি টুইট করে ফলাফল অর্জন করতে পারে floor((n*9+8)/(10**floor(log10(n))*10))

শূন্যের সাথে লেনদেন করা যুক্তিসঙ্গতভাবে সহজ: এটির জন্য যখন অতিরিক্ত n<10অর্থ হয় তখনই হয় floor(log10(n))==0


2

গণিত, 83 বাইট

v=DigitCount;s=v@0;(Table[s[[i]]=v[j][[i]]~Max~s[[i]],{i,10},{j,#}];s[[9]]=0;Tr@s)&


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