ওয়েল শামুক


47

পটভূমি

একটি সাধারণ ধাঁধা আছে যা এরকম কিছু করে:

একটি শামুক 30 ফুট কূপের নীচে রয়েছে। প্রতিদিন শামুক 3 ফুট উপরে উঠতে সক্ষম হয়। রাতে যখন তারা ঘুমায়, তারা পিছনে পিছনে 2 ফুট পিছলে যায়। শামুকটি কূপ থেকে বের হতে কত দিন সময় লাগে?

স্বজ্ঞাত উত্তরটি হ'ল

30 দিন, কারণ শামুকটি শীর্ষে পৌঁছানোর জন্য 30 দিনের জন্য প্রতিদিন 1 ফুট উপরে উঠে যায়,

তবে আসলে উত্তরটি হ'ল

২৮ দিন, কারণ শামুকটি একবার বাতাসে ২ feet ফুট হয়ে গেলে (২ 27 দিন পরে), তারা কেবল ২৮ তম দিনে বাকি 3 ফুট উপরে উঠবে।

চ্যালেঞ্জ

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

যদি শামুকটি কূপের বাইরে উঠতে না পারে তবে আপনি 0 ফিরে আসতে পারেন, একটি মিথ্যা মান ফিরে পেতে পারেন বা একটি ব্যতিক্রম ছুঁড়ে ফেলতে পারেন। আপনি এমন কোডও লিখতে পারেন যা কোনও সমাধান থাকলেই কেবল থামবে।

আপনি যদি চান তবে আপনি পতনের উচ্চতাটিকে নেতিবাচক পূর্ণসংখ্যার হিসাবে নিতে পারেন।

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

(30, 3, 2) -> 28
(84, 17, 15) -> 35
(79, 15, 9) -> 12
(29, 17, 4) -> 2
(13, 18, 8) -> 1
(5, 5, 10) -> 1
(7, 7, 7) -> 1
(69, 3, 8) -> কিছুই নয়
(81, 14, 14) -> কিছুই নয়

স্কোরিং

এটি , তাই প্রতিটি ভাষার সংক্ষিপ্ত উত্তর জিততে পারে।



8
গ্রে শামুকের কেউ উত্তর দিলে আমি সম্ভবত একটি বরাদ্দ দেব। Esolangs পৃষ্ঠা শুধু একটি খালি শহরের উপর অসম্পূর্ণ নিবন্ধ কিন্তু আছে কিছু তথ্য এবং একটি অনলাইন কম্পাইলার প্রাপ্তিসাধ্য , সেইসাথে বিয়ার সমস্যা 99 বোতল জন্য একটি নমুনা প্রোগ্রাম
musicman523

4
আমি ভেবেছিলাম এটি কেবল একটি সাধারণ সূত্র হবে, তবে কেস কাজটি আশ্চর্যজনকভাবে আকর্ষণীয়।
xnor

আপনার এখনও "কত ঘন্টা ...." আছে। উত্তরটি 27 * 24 + 12 হচ্ছে (12 ঘন্টা 'দিন ধরে')।
ফ্রান্সিস ডেভি

2
@ ওয়েট উইজার্ড আমি সবচেয়ে কম ধূসর গ্রে শামুক উত্তরের জন্য পুরষ্কার দেব
musicman523

উত্তর:


21

ধূসর শামুক , সংখ্যা I / O এর জন্য 1206 বাইট, অ্যানারি আই / ও এর জন্য 149 বাইট

মজার জন্য. প্রথম প্রোগ্রামের রচনা:

  • 451 বাইট, সংখ্যাকে বিন্দুতে রূপান্তর করে
  • 121 বাইট, মূল ফাংশন (একটি পৃথক সংস্করণ নীচে লেখা আছে)
  • 634 বাইট, বিন্দু সংখ্যায় রূপান্তর

সংখ্যার ইনপুট এবং আউটপুট নিন। ইনপুট হয় A, B, Cযথাক্রমে। অন্যান্য (কাছাকাছি) O(1)জবাবের তুলনায় কোডটির জটিলতা রয়েছে O(n)। তবে প্রচুর সংখ্যার জন্য এটি আপনার স্মৃতি প্রথমে খেয়ে ফেলতে পারে।

কোনও সমাধান না পাওয়া গেলে ঝুলুন।

INPUT p
POP Z r .!
f
POP Z o .
q
POP Z p [p]
GOTO [Z]
0
POP Z n .
GOTO w
1
POP Z n ..
GOTO w
2
POP Z n ...
GOTO w
3
POP Z n ....
GOTO w
4
POP Z n .....
GOTO w
5
POP Z n ......
GOTO w
6
POP Z n .......
GOTO w
7
POP Z n ........
GOTO w
8
POP Z n .........
GOTO w
9
POP Z n ..........
GOTO w
w
POP Z o .[o][o][o][o][o][o][o][o][o][o][n]
GOTO [r] [p] 
GOTO q
!
POP Z A .[o]
INPUT p
POP Z r .@
GOTO f
@
POP Z B .[o]
INPUT p
POP Z r .#
GOTO f
#
POP Z C .[o]
POP H N .[B]
U
POP Z A [A]
POP Z B [B]
GOTO D [A] 
GOTO $ [B] 
GOTO U
$
POP Z A .[A][C]
POP Z H ..[H]
POP Z B .[N]
GOTO U
D
POP Z r .
POP Z M .
POP Z N ...........
POP Z z .[N]
POP Z V .[H]
+
GOTO l[V] [H] 
POP Z H [H]
POP Z z [z]
GOTO ( [z] 
GOTO +
(
GOTO ) [H] 
POP Z z .[N]
POP Z M ..[M]
POP Z V .[H]
GOTO +
)
POP Z r .0[r]
POP Z M ..[M]
POP Z H .[M]
POP Z M .
POP Z V .[H]
POP Z z .[N]
GOTO +
l
POP Z r .0[r]
GOTO -
l.
POP Z r .1[r]
GOTO -
l..
POP Z r .2[r]
GOTO -
l...
POP Z r .3[r]
GOTO -
l....
POP Z r .4[r]
GOTO -
l.....
POP Z r .5[r]
GOTO -
l......
POP Z r .6[r]
GOTO -
l.......
POP Z r .7[r]
GOTO -
l........
POP Z r .8[r]
GOTO -
l.........
POP Z r .9[r]
GOTO -
-
GOTO / [M] 
POP Z H .[M]
POP Z M .
POP Z V .[H]
POP Z z .[N]
GOTO +
/
OUTPUT [r]

fপূর্ণসংখ্যাকে বিন্দুতে রূপান্তর করতে একটি (সম্ভবত) পুনরাবৃত্ত ফাংশন। যুক্তিটি সংরক্ষণ করা হয় [p]এবং আউটপুট ইন হয় [o]

Uএকটি ফাংশন টেস্টিং S1>=S2, এ প্যারামিটার সংরক্ষণকারী B, Aসময় সংরক্ষণ A-Bমধ্যে A

কোড থেকে শুরু করা Dহ'ল একটি স্টাবকে সংখ্যায় রূপান্তরিত করে।

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

স্বতন্ত্র সংস্করণ, 149 156 157 167 170 230 বাইটস, কেবল অ্যানারি আই / ও সমর্থন করে

ইনপুট দরকার বিন্দু, যেমন হতে ..........জন্য 10

INPUT A
INPUT B
INPUT C
POP N H .
GOTO U
$
POP N A .[A][C]
POP Z H ..[H]
U
POP Z A [A]
POP Z N ..[N]
GOTO D [A] 
GOTO $ .[B] [N]
GOTO U
D
OUTPUT .[H]

Uগণনা করে A=A-Bএবং Dকখন লাফ দেয় A<=0। অন্যথায় $নির্ধারণ A+Cকরতে Aএবং কল U

কোনও সমাধান না পাওয়া গেলে ঝুলুন।

কৌশল: খালি স্ট্রিংটি ব্যাখ্যা করার "সংকলক" এর ক্ষমতার অপব্যবহার করুন। GOTOশর্তহীন জাম্প করতে বিবৃতিতে আপনি শর্তগুলি ছিন্ন করতে পারেন এবং একই কৌশলটি কাজ করে POP

মন্তব্য: আমি এটি আরও 3 টি বাইট দ্বারা গল্ফ করতে পারি তবে এটি করার মাধ্যমে আমার এবং হুইটউইজার্ডের উত্তরটির ঠিক একই যুক্তি থাকতে পারে। ফলাফলটি সম্ভবত সবচেয়ে সংক্ষিপ্ত গ্রেসনেল সমাধান এবং আমি এটি প্রমাণ করার চেষ্টা করছি।


আপনি এটি প্রথম তৈরি করেছেন
Новиков

আরে আমি কেবল ভেবেছিলাম আমি আপনাকে জানাতে পারি যে আমি নিজের চেয়ে আমার নিজেকে আরও ছোট করে তুলেছি। এটি কেবলমাত্র একটি বাইট সংক্ষিপ্ত এবং এটি আপনার সর্বশেষ গল্ফ থেকে কিছু অনুপ্রেরণা আকর্ষণ করে।
গম উইজার্ড 14

@ উইট উইজার্ড আপনার পুরানো উত্তরের উপর ভিত্তি করে আমার একটি 155-বাইট সমাধান রয়েছে। তবে ক্রীড়াবিদ হিসাবে, আমি এটিকে আমার উত্তর হিসাবে দেখব না।
কীউ গান

@ কেয়ুগান না, এগিয়ে যান আমি খেলা সম্পর্কে সমস্ত প্রতিনিধি সম্পর্কে যত্ন নেই। মারতে পেরে আমি খুশি। আমার কোডটি যদি গল্ফ করা যায় তবে এটি না দেখার জন্য আমার দোষ। :)
গম উইজার্ড 15

@ উইট উইজার্ড মি। আমি নিশ্চিত আমি পিপিসিজিতে এটাই সবচেয়ে সেরা সময়।
কিয়ু গান

20

দ্রষ্টব্য: বাইট গণনাটি মন্তব্যে মার্টিন ইন্ডার দ্বারা প্রশ্ন করা হচ্ছে। মনে হচ্ছে এটি সি # টি উত্তরগুলিতে নামযুক্ত, পুনরাবৃত্ত ল্যাম্বডা এক্সপ্রেশন দিয়ে কী করবেন সে সম্পর্কে কোনও পরিষ্কার sensক্যমত্য নেই। সুতরাং আমি এটি সম্পর্কে মেটাতে একটি প্রশ্ন জিজ্ঞাসা করেছি।

সি # (.নেট কোর) , 32 31 বাইট

f=(a,b,c)=>a>b?1+f(a-b+c,b,c):1

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

একটি পুনরাবৃত্তি পদ্ধতির। যদি শামুকটি পালাতে না পারে তবে এটি নিম্নলিখিত বার্তার মাধ্যমে শেষ হয়:Process is terminating due to StackOverflowException.

  • 1 টি বাইট LiefdeWen ধন্যবাদ!

1
আপনি একটি বাইট বাইট পরিবর্তন সংরক্ষণ করতে পারবেন a<=bকরার a>bএবং নিম্নলিখিত অংশের সোয়াপিং
LiefdeWen

3
ঠিক একই কোড ES6f=(a,b,c)=>a<=b?1:1+f(a-b+c,b,c)
টুশার

আপনি যদি সেই নামটি fপুনরাবৃত্তিকারী কলটির জন্য নির্ভর করে থাকেন তবে আপনাকে সেই কোডটি গণনা করতে হবে যা একটি নামকে ফাংশন নির্ধারণ করে ।
মার্টিন ইন্ডার

4
আমি সি # তে গল্ফ করি না তাই আমি conকমত্যটি কী তা সম্পূর্ণরূপে নিশ্চিত নই, তবে fএটির নাম ঘোষণা করা হলে আমি একটি ঘোষণাপত্রের সাথে একটি পূর্ণ বিবৃতি এবং একটি সেমিকোলন প্রয়োজন বলে আশা করব । প্রথম জিনিস আমি খুঁজে পাওয়া যায়নি এই কিন্তু কোন স্পষ্ট ঐক্যমত্য এখানে।
মার্টিন ইন্ডার

2
@ মার্টিনএন্ডার আমি সাধারণত কার্লোস এখানে যেমন করেছিলাম ঠিক তেমনই করি, কারণ এই ঘোষণাপত্রটি কেবলমাত্র f=...আমরা শেষ পর্যন্ত আধা-কোলন যুক্ত করব কিনা তা সম্পর্কে আমি নিশ্চিত নই।
TheLethalCoder

13

গ্রে গ্রেড এসএনএইল, 219 206 169 167 159 156 146 বাইট (একরকম আইও)

INPUT a
INPUT u
INPUT d
POP U c 
GOTO 1
3
POP f a [a][d]
POP U c ..[c]
1
GOTO 2 [a] 
GOTO 3 [U] [u]
POP f U ..[U]
POP f a [a]
GOTO 1
2
OUTPUT [c].

আমি মনে করি আমি এটি কিছুটা গল্ফ করতে পারি।


অভিনন্দন!
কিয়ু গান

11

জাভাস্ক্রিপ্ট (ES6), 31 28 27 বাইট

কিছুটা বাইট সংরক্ষণ করেছেন @ আরনাউল্ডকে ধন্যবাদ

আমি বুঝতে পারি নি যে আমরা ব্যতিক্রম হতে পারি। খুব নিশ্চিত যে এটি সর্বোত্তম:

u=>d=>g=h=>h>u?1+g(h-u+d):1

যেমন একটি ভেরিয়েবলকে বরাদ্দ করুন f=, তারপরে কল করুন f(climb)(fall)(height)InternalError: too much recursionআরোহণ অসম্ভব হলে ছুড়ে ফেলে ।


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

f=(h,u,d=0)=>h>u?u>0?1+f(h-u,u-d):+f:1

একটি পুনরাবৃত্ত ফাংশন যা দিনের সংখ্যা বা NaNকখনই না ফেরায়।

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


2
এটি সুস্পষ্ট: যদি শামুক খুব বেশি পুনরাবৃত্তি করে , তবে আরোহণ অসম্ভব। :)
তুষার

1
বিপরীত কারিরিং সিনট্যাক্স সহ সম্ভবত 27? d=>u=>g=h=>h>u?1+g(h-u+d):1
আর্নল্ড

@ আর্নল্ড ধন্যবাদ, এটি আশ্চর্যজনকভাবে ভালভাবে কাজ করে ...
ETH প্রোডাকশনগুলি

আমি এটি বিভ্রান্ত হয়ে আবার বাইট গণনা করছি- একটিতে ভেরিয়েবলটি নির্ধারিত হয়েছে টি অন্তর্ভুক্ত করা হয়েছে, অন্যটি নয়?
নাম প্রদর্শন করুন

শীর্ষস্থানীয় সংস্করণে অরেঞ্জস্যান্ডলেমোনস, আপনার g=মাঝখানে রয়েছে কারণ এই পরিবর্তনশীলটি रिकরসিভ কলের জন্য প্রয়োজনীয় মধ্যবর্তী ফাংশন সংরক্ষণ করে stores দীর্ঘ উত্তরটি একটি পুনরাবৃত্তি কল করে fযা নামটি বাইট গণনায় অন্তর্ভুক্ত করার আদেশ দেয়।
musicman523

10

এক্সেল, 51 46 বাইট

-1 বাইট @ স্কারাবিকে ধন্যবাদ ।

-4 কারণ INT (x) = ফ্লোর (x, 1)

=IF(B1<A1,IF(C1<B1,-INT((B1-A1)/(B1-C1)-1)),1)

যথাক্রমে ঘর A1, B1 এবং C1 থেকে নেওয়া ইনপুট। FALSEঅবৈধ পরিস্থিতিগুলির জন্য ফিরে আসে ।


ceiling(x)সর্বদা সমান -floor(-x), তাই আমি মনে করি আপনি প্রতিস্থাপন 1 বাইট বাঁচাতে পারে CEILING((A1-B1)/(B1-C1)+1,1)সঙ্গে -FLOOR((B1-A1)/(B1-C1)+1,1)
স্কারাবি

7

সি (জিসিসি), 39 43 44 46 47 58 60 বাইট

শুধুমাত্র 32-বিট জিসিসিতে এবং সমস্ত অপ্টিমাইজাইটনগুলি বন্ধ রয়েছে।

f(a,b,c){a=a>b?b>c?1+f(a-b+c,b,c):0:1;}

সমাধানটি অসম্ভব হলে 0 ফিরে আসুন। মূল পুনরাবৃত্ত সমাধানের একটি পরিবর্তিত সংস্করণ।

@ জোনাঃ জে দ্রবণ এবং @ কার্লোস আলেজো সি # সমাধান দ্বারা অনুপ্রাণিত।

আমি পরে প্রসারিত সংস্করণটি আপডেট করব (আমি আমার গ্রে শামুক উত্তর শেষ করার পরে)।


সুন্দর! আপনি দয়া করে বিশ্লেষণাত্মক (সঙ্কুচিত নয়) সমাধানটি অন্তর্ভুক্ত করতে পারেন?
koita_pisw_sou

1
@ কোয়েটা_পিসউ_সুওর
কিউ গান

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

@ কোডি গ্রে এটি জিসিসিতে একটি স্থিতিশীল তবে অপরিবর্তিত আচরণ ব্যবহার করে। আমি আপনাকে পরে একটি লিঙ্ক প্রদর্শন করতে পারে।
কিউ গান


7

জাভা (ওপেনজেডিকে 8) , 35 বাইট

(a,b,c)->b<a?c<b?(a+~c)/(b-c)+1:0:1

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

ম্যাথ জিতল!

ক্রেডিট


1
কিছুক্ষণ হয়ে গেল, তবে a-c-1a+~c
কেভিন ক্রুইজসেন

1
ধন্যবাদ @ কেভিন ক্রুইজসেন কিছুক্ষণ হয়ে গেছে, তবে গল্ফটি গল্ফ, এটি কখনই ঘটে না কেন :-)
অলিভিয়ার গ্রাওগায়ার ২

আমার চিন্তা ঠিক. আমি যখন আমার প্রথম উত্তরগুলির কয়েকটি দেখলাম তখন কয়েকবার আমি আমার আসল বাইটগুলি অর্ধেক সম্পর্কে গল্ফ করলাম। ;)
কেভিন ক্রুইজসেন 15'12

5

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

f=lambda x,y,z:x-y<1or 1+f(x-y+z,y,z)

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

অবশেষে আমার স্ট্যান্ডার্ড গণনার নীচে আমার পুনরাবৃত্ত সংস্করণ পেয়েছে (আমি ফোন করার আগে একটি যুক্ত করার পরিবর্তে আমার ফাংশনে একটি গণনা পাস করছিলাম)।

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

#43 bytes
lambda x,y,z:y/x>0 or[1-(x-y)/(z-y),0][z/y]
#46 bytes
lambda x,y,z:y/x and 1or[1-(x-y)/(z-y),0][z/y]

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

"__> 0" এর জন্য "__ এবং 1" ট্রেড করে 3 বাইট শেভ করা হয়েছে।

বুলিয়ান ট্র্যাকারি ব্যবহার করে, প্রয়োজনীয়ভাবে সম্পাদন করে:

if floor(y/x) > 0:
    return True # == 1
elif floor(z/y) == 1:
    return 0
elif floor(z/y) == 0:
    return 1-floor((x-y)/(z-y))
    # Python 2 implicitly treats integer division as floor division
    # equivalent: 1 + math.ceil((y-x)/(z-y))
    # because: -floor(-x) == ceil(x)

2
আপনাকে f=আপনার কোডের (প্রথম সমাধান) সামনে রাখতে হবে এবং আপনার বাইট গণনাটি 37 হয়, কারণ এটি পুনরাবৃত্ত হয়, সুতরাং আপনি এটিকে বেনামে ছেড়ে যেতে পারবেন না। f=ল্যাম্বদার জন্য কেবল তখনই বাদ দেওয়া যেতে পারে যখন এটি পুনরুদ্ধারযোগ্য নয়।
মিঃ এক্সকোডার

সুপরিচিত ও সম্বোধন করেছেন। আমাকে জানতে দেওয়ার জন্য ধন্যবাদ।
কোটি জননাথন স্যাক্সমান

4

আর, 43 বাইট

অন্যান্য উত্তর থেকে orrowণ নেওয়া:

g=function(a,b,c)`if`(b<a,1+g(a-b+c,b,c),1)

কোনও সমাধান না হলে ত্রুটি দেয়।


চমৎকার উত্তর. পিপিসিজিতে আপনাকে স্বাগতম!
musicman523

3

জে, 25 বাইট

প্রথমে একটি দুর্দান্ত সমাধান, যা প্রতারণা, কারণ এটি ধরে নেওয়া হয় যে "ইতিবাচক পূর্ণসংখ্যার ফলাফল ছাড়া অন্য কিছু" "কিছুই নয়" সমান:

>.>:%/2-/\

ব্যাখ্যা

  • 2-/\আমাদের 3 আইটেম ইনপুট জুড়ে 2 দৈর্ঘ্যের উইন্ডো ব্যবহার করুন, প্রতিটিটির মধ্যে একটি বিয়োগ চিহ্ন স্থাপন করে, যা ইনপুটটির জন্য 30 3 2যেমন, ফেরত দেয়27 1
  • %/ তালিকার প্রতিটি উপাদানটির মধ্যে একটি বিভাগ চিহ্ন স্থাপন করুন, আমাদের ক্ষেত্রে তালিকার কেবল দুটি আইটেম রয়েছে, সুতরাং এর অর্থ "27 দ্বারা 1 কে ভাগ করুন"
  • >: 1 দ্বারা বৃদ্ধি
  • >. সিলিং নিন

সরকারী সমাধান

এখানে সরকারী সমাধান যা নেতিবাচক এবং অনন্তকে 0 তে রূপান্তরিত করে, কোন অংশের জন্য আমি সন্তোষজনকভাবে সংশ্লেষ সমাধানটি খুঁজে পাইনি:

0:`[@.(>&0*<&_)>.>:%/2-/\

Tio


If the snail cannot climb out of the well, you may return 0, return a falsy value, or throw an exception.পরীক্ষার মামলাগুলি লেখার উদ্দেশ্যে, আমি কেবল Noneইঙ্গিত করেছিলাম যে কোনও উত্তর নেই। আপনি কি ব্যাখ্যা এবং একটি চেষ্টা চেষ্টা করে দেখুন অনলাইন লিঙ্কটি বিবেচনা করবেন?
musicman523

@ musicman523 স্থির এবং সম্পন্ন হয়েছে।
জোনাহ


3

পিএইচপি> = 7.1, 60 বাইট

কোনও প্রকারের জন্য 0 মুদ্রণ করে

[,$h,$u,$d]=$argv;echo$h>$u?$u>$d?ceil(($h-$d)/($u-$d)):0:1;

পিএইচপি স্যান্ডবক্স অনলাইন

পিএইচপি> = 7.1, 67 বাইট

কোনও অব্যাহতি জন্য কিছু মুদ্রণ

for([,$h,$u,$d]=$argv;($u>$d?:$h<=$u)&&0<$h+$t*$d-$u*++$t;);echo$t;

পিএইচপি স্যান্ডবক্স অনলাইন


2

গণিত, 47 40 39 বাইট

If[#==#2,1,⌈(#-#3)/(#2-#3)⌉~Max~0]&

@ কেয়ুগান থেকে -7 বাইট


আপনাকে ইনপুট হিসাবে ডিল করতে হবে 69, 3, 8এবং আমি যতদূর মনে করি 3 বাইট হিসাবে গণ্য করা হয়।
কীউ গান

সব ঠিক! এখনই এটি ব্যবহার করে দেখুন
J42161217

আপনি বিবৃতি Maxপ্রতিস্থাপন করতে ব্যবহার করতে পারেন IfIf[#<=#2,1,Max[⌈(#-#3)/(#2-#3)⌉,0]]&
কিউ গান

2

রুবি , 49 47 বাইট

->h,a,b{h-a<1?1:(1.0*(h-a)/[a-b,0].max+1).ceil}

শামুক উঠতে না পারলে ব্যতিক্রম ছুঁড়ে

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


1
@ জোনাহ এটি ঠিক করেছে
অ্যালেক্স

প্রোকের পিছনে যুক্তি কী? h-a<1?1:(1.0*(h-a)/[a-b,0].max+1).ceilপরীক্ষার কেস পাস করে, এবং 9 বাইট সংরক্ষণ করে।
গ্যালেন

2

ব্যাচ, 66 বাইট

@set/an=%4+1,a=%1-%2+%3
@if %1 gtr %2 %0 %a% %2 %3 %n%
@echo %n%

দ্বিতীয় শেষ পরীক্ষার কেস কিছুই ছাপেনি, এবং শেষ পরীক্ষার কেস আসলে ক্র্যাশ হয়েছিল CMD.EXE...


2

05 এ বি 1 , 19 বাইট

0[¼²+D¹<›i¾q}³-D1‹#

ব্যাখ্যা:

0                   Initialise stack with 0
 [                  while(true)
  ¼                   increment the counter variable
   ²+                 add the second input to the top of the stack
     D¹<›i            if it is greater than or equal to the first input
          ¾             push the counter variable
           q            terminate the program
             }        end if
              ³-      subtract the third input from the top of the stack
                D     duplicate top of stack
                 1‹   if it is less than 1
                   #  break the loop

অবৈধ মানগুলির জন্য, এটি কোনও মান 1 এর চেয়ে কম ফেরত দিতে পারে তবে 05AB1E-এ কেবল 1 টি সত্যবাদী তাই এটি প্রয়োজনীয়তার সাথে পূরণ করে যে কোনও অবৈধ মানের আউটপুট মিথ্যা হওয়া উচিত be

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


2

পিএইচপি, 60 বাইট

[,$h,$v,$d]=$argv;echo$h>$v?$v>$d?ceil(($h-$d)/($v-$d)):N:1;

Nজন্য প্রিন্ট None। সাথে চালাও -r



2

জাপট , 12 বাইট

@UµV-W §W}aÄ

এটি অনলাইন পরীক্ষা!

undefinedসম্ভবত আপনার ব্রাউজারটি কিছুক্ষণের জন্য হিমশীতল করার পরে কখনই ফলাফল হয় না, তাই দয়া করে সাবধান হন।

আমি নিশ্চিত নই যে এটি সর্বোত্তম। oWV-W lসবশেষে শেষ তিনটি মামলা ছাড়াও কাজ করে ...


নিয়ে এসেছেন এই ইনপুট ক্রম পরিবর্তন করে 11 বাইট জন্য।
শেগি

2

হাস্কেল , 30 29 বাইট

(b!c)a=1+sum[(b!c)$a+c-b|a>b]

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

বিদ্যমান হাস্কেল উত্তরের চেয়ে কম। সম্ভবত আর কেউ আমাকে মারতে পারে।

সমস্যাটি সমাধানে এটি পুনরাবৃত্তি পদ্ধতির ব্যবহার করে। প্রতিটি পুনরাবৃত্তি মূলত শামুকের জন্য চলাচলের দিন। যদি শেষের বামদিকের দূরত্ব এখনও কম দূরত্বের চেয়ে কম হয় তবে আমরা আমাদের পুনরাবৃত্তিটি শেষ করব।


পোতা স্বরলিপি সঙ্গে সংরক্ষণ 1 বাইট: (b#c)a=1+sum[(b#c)$a+c-b|a>b]
লাইকনি

@ লাইকনি জানেন না যে এটি করা যেতে পারে। ভকভগক.
গম উইজার্ড

আপনি b!cতালিকা বোধের কাছাকাছি পেরেনগুলি ফেলে দিতে পারেন ।
Zgarb

2

কিউবিআইসি , 31 23 বাইট

প্রয়োজনীয়তা পরিবর্তিত লক্ষ্য করা গেছে। এই সংস্করণটি শামুকটি কখনই ভালোর শীর্ষে পৌঁছবে কিনা তা পরীক্ষা করে না।

≈:-:>0|q=q+1┘a=a-b+:]?q

মূল সংস্করণটির জন্য নীচের ব্যাখ্যাটিতে কোনও সমাধান রয়েছে কিনা তা যাচাই করে না, এই কোডের সমস্ত প্রাসঙ্গিক অংশকেও কভার করে।


আসল, 31 বাইট উত্তর:

~:>:|≈:-a>0|q=q+1┘c=c-a+b]?q\?0

ব্যাখ্যা

~           IF
 :          cmd line arg 'a'  (the increment of our snail)
  >         is greater than
   :        cmd line arg 'b'  (the decrement, or daily drop)
    |       THEN
≈           WHILE
 :          cmd line arg 'c'  (the height of the well)
  -a        minus the increment (we count down the hieght-to-go)
    >0|     is greater than 0 (ie while we haven't reached the top yet)
q=q+1       Add a day to q (day counter, starts at 1)
┘           (syntactic linebreak)
c=c-a+b     Do the raise-and-drop on the height-to-go
]           WEND
?q          PRINT q (the number of days)
\?0         ELSE (incrementer <= decrementer) print 0 (no solution)

এটি অনলাইন চেষ্টা করুন! (ঠিক আছে, সত্যিই নয়: এটি কিউবিসি-র অনুবাদ যা কিউব্যাসিক কোড যা repl.it এর মধ্যে চালিত হয় (কিছুটা অভাব রয়েছে) কিউব্যাসিক এনভায়রনমেন্ট)


2

এক্সেল ভিবিএ, 47 বাইট

বেনামী VBE অবিলম্বে উইন্ডোতে ফাংশন যে ইনপুট পরিসীমা থেকে লাগে [A1:C1]থেকে ActiveSheetVBE অবিলম্বে উইন্ডোতে বস্তু আউটপুট

এই প্রাথমিকভাবে এক্সেল সূত্র ভিত্তিক সমাধানটি যে কোনও বিশুদ্ধ ভিবিএ সমাধানের সাথে আমি আসতে পারি তার চেয়ে ছোট বলে মনে হচ্ছে :(

?[If(B1>C1,-Int((B1-A1)/(B1-C1)-1),Int(A1=B1))]

1

হাস্কেল, 47 55 বাইট (48 টিউপল প্রয়োজন হলে)

f d c s|d<=c=1|c<s= -1|d>c||c<s=1+(f(d-c+s)c s)

tuple প্রকরণ

f(d,c,s)|d<=c=1|c<s= -1|d>c||c<s=1+(f(d-c+s)c s)

ব্যাখ্যা

f d c s       function that does all the heavy lifting =)
              d - depth
              c - climb per day
              s - slide per night

 |d<=c=1             recursion terminator. 1 day of climbing 
 |c<s= -1            possibility check. top can't be reached
 |otherwise=1+(f(d-c+s)c s)  1 day plus the rest of the distance

1
1. আপনি ইতিমধ্যে নিখুঁতভাবে আপনার ব্যাখ্যায় যেমনটি d>c||c<sকরেছেন ঠিক 0<1তেমন প্রতিস্থাপন করতে পারেন , কারণ otherwiseএটি কেবল একটি প্রতিশব্দ True। ২. আপনার টুপল সংস্করণে পুনরাবৃত্তি কলটি এখনও ক্রিড। ৩. আপনি আরও দুটি বাইট সংরক্ষণ করার (d#c)sপরিবর্তে আপনার ফাংশনটি সংজ্ঞায়িত করতে পারেন f d c s
লাইকনি

1
c<=sপরিবর্তে আপনার প্রয়োজন c<s
লাইকনি

1
ওপি দ্বারা অনুমোদিত হিসাবে 0পরিবর্তে পুনরায় অর্ডারিং এবং ব্যবহার -1করলে 38 বাইট পাওয়া যায়: অনলাইনে চেষ্টা করে দেখুন!
লাইকনি

1
আপনি কোনও বাইট সংরক্ষণ করতে একটি ইনফিক্স শনাক্তকারী ব্যবহার করতে পারেন?
musicman523

আমি জানি না, যদি আমার সম্পাদিত আনসার পোস্ট করা উচিত যেহেতু এটি লাইকোনির উত্তরটি রয়েছে
মার্টিনেঙ্কো

1

পাইথন 3, 41 বাইট

f=lambda a,b,c:int(b>=a)or 1+f(a-b+c,b,c)

কখনও ত্রুটি

আউটগল্ফ


1
পিপিসিজিতে আপনাকে স্বাগতম! চমৎকার প্রথম উত্তর :)
musicman523

2
আমি বেশি পাইথন জানি না, তবে আপনি কি 2 বাইট সংরক্ষণ করতে পরিবর্তন int(b>=a)করতে 1-(b<a)পারেন?
ইটিএইচ প্রোডাকশনস


1

সি # (.নেট কোর) , 37 বাইট

(h,c,f)=>h>c?f<c?1+(h-f-1)/(c-f):0:1;

অ-পুনরাবৃত্ত ল্যাম্বদা। সূত্র ব্যবহার এখানে । "কোনও নেতিবাচক ফলাফল" ব্যর্থতা ফিরে পাওয়ার বৈধ উপায় যদি 6 বাইট দ্বারা সংক্ষিপ্ত করা যায়; পরিবর্তে 0 ফিরে আসে।


কিছুক্ষণ হয়ে গেছে, কিন্তু h-f-1হতে পারে h+~f
কেভিন ক্রুইজসেন

1

পাইথন ভি 2 এবং ভি 3, 44 বাইট

f=lambda x,y,z:1+f(x-(y-z),y,z)if x>y else 1

None কোনও ক্ষেত্রেই অসীম পুনরাবৃত্তি (ত্রুটি)।


আপনি ল্যাম্বদা ব্যবহার করতে পারেন। এছাড়াও, এটা আমার (জাভা) উত্তর অনুরূপ বলে মনে হয় তাই আমাকে সূত্রে একটি উন্নতি সুপারিশ করার মঞ্জুরি দিন: (x-z-1)//(y-z)+1। আমি খুব বেশি পাইথন করি না, তাই আমার ভুল হতে পারে ...
অলিভিয়ার গ্রাগোয়ার

আপনি f=বাইট গণনা থেকে অপসারণ করতে পারেন , ifs এবং এলিসের চারপাশে কিছু স্পেস সরিয়ে ফেলতে এবং পাইথন 2 এ স্যুইচ করতে পারেন যেখানে পূর্ণসংখ্যা বিভাগটি একক/
সঙ্গীতজ্ঞ 523

ধন্যবাদ @ musicman523। আমি আপনার সমস্ত পরামর্শ গ্রহণ শেষ ।
VeganaiZe

1
আমি বুঝতে পেরেছিলাম যে আমার "ক্লিন" (কোনও অসীম পুনরাবৃত্তি নয়) কোডে অন্যান্য ইনপুটগুলি (যেমন 4, 3, 8) ব্যবহার করার সময় কর্নারের ক্ষেত্রে প্রচুর সমস্যা ছিল। @ musicman523 আমি মনে করি আপনি যে "প্রমাণগুলি" বলছেন তা আমি দেখতে শুরু করছি।
VeganaiZe

1

এইচপি -15 সি প্রোগ্রামেবল ক্যালকুলেটর, 26 বাইট

প্রোগ্রামটি চালানোর আগে তিনটি নম্বর স্ট্যাকের মধ্যে লোড করা হয়। পতনের উচ্চতা negativeণাত্মক সংখ্যা হিসাবে প্রবেশ করানো হয়েছে। যদি শামুকটি ভাল থেকে উঠতে না পারে তবে ফলাফলটি হয় নেতিবাচক সংখ্যা বা ত্রুটি # 0 (শূন্য বিভাজন ত্রুটি)।

হেক্সে ওপ কোডগুলি:

C5 C1 B4 C5 FB 74 1A C4 FA B4 C5 FD C1 C1 A3 70 C6 F0 B4 FA EB F1 FA B2 0A F1

নির্দেশের অর্থ:

x↔y 
ENTER
g R⬆
x↔y 
− 
g TEST x≤0 
GTO A
R⬇
+ 
g R⬆
x↔y 
÷ 
ENTER
ENTER
f FRAC
TEST x≠0 
EEX 
0 
g R⬆
+ 
g INT 
1 
+ 
g RTN 
f LBL A
1

আপনি এইচপি -15 সি সিমুলেটার দিয়ে প্রোগ্রামটি চেষ্টা করতে পারেন ।


এটা সত্যিই দারুন! PPCG করার :) স্বাগতম
musicman523


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