কোড গল্ফ প্রশ্নের অসুবিধা গণনা করুন


43

সারসংক্ষেপ

একটি কোড গল্ফ প্রশ্নের অসুবিধা এই হিসাবে গণনা করা যেতে পারে:

সূত্র

vএকটি প্রশ্নের কতগুলি ভিউ রয়েছে Where

এবং aএকটি প্রশ্নের উত্তরগুলির সংখ্যা

এবং ⌈ এক্স ⌉ হয় সিলিং অপারেটর

এছাড়াও:

বাতা

এই প্রশ্নের বর্তমান অসুবিধা: ***

কার্য

এমন একটি প্রোগ্রাম লিখুন যা দুটি পূর্ণসংখ্যার গ্রহণ করবে (v and a)এবং অসুবিধাটি আউটপুট করবে asterisks (*)

ইনপুটটি অ্যারের আকারে, একটি পৃথক স্ট্রিং বা পৃথক ফাংশন আর্গুমেন্ট হিসাবে হতে পারে

পরীক্ষার ডেটা

Views   Answers Difficulty  Program Output
163     2       2           **
548     22      1           *
1452    24      1           *
1713    37      1           *
4162    32      2           **
3067    15      3           ***
22421   19      10          **********

সিউডোকোড সহ উদাহরণ

v: 1713    
a: 37
out = clamp(ceil(((v/a)/700)*10), 0, 10); // evaluates to 1
//program will output '*'

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জিতেছে! চলার / শীর্ষস্থানীয় স্থানগুলি অনুমোদিত।


3
আমি বুঝতে পারি যে ল্যাটেক্স আরও সহজ সূত্রের স্ট্রিং বুঝতে বুঝতে পারে .. তবে সংখ্যাগরিষ্ঠ যা চায় তা আমি অনুমান করি ..
শন ওয়াইল্ড

3
প্রশ্নটি নিম্নমুখী হওয়ার জন্য আপনার প্রায় যোগ করা উচিত [ নিম্নরূপ ] ed
Adám

5
এটি একটি কোড গল্ফ প্রশ্ন। সাইটে সত্যিকারের সিস্টেম প্রয়োগ করা হচ্ছে না। অন্যায় হলে কে পাত্তা দেয়?
শন ওয়াইল্ড

13
এর প্রথম দিকে তাই আমি এখানে কিছু মিস করতে পারি তবে এর /700 * 10পরিবর্তে কেন /70?
কেভিন এল

4
@ কেভিনল এসএসএইচএইচ;)
শন ওয়াইল্ড

উত্তর:


49

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

v=>a=>"**********".substring(10-v/a/70)

কারণ substringপ্রয়োজনীয় ক্ল্যাম্পিং এবং "সিল" আইং আচরণ সরবরাহ করে। সম্পাদনা: সাধারণত আমি বিরক্ত করতে খুব অলস, তবে এটি 4 টি উর্ধ্বতন পেয়েছে বলে, আমি কার্স দিয়ে 1 বাইট সংরক্ষণ করার জন্য @ মার্সআল্টারের পরামর্শ অনুসরণ করেছি।


ওহ, এটি সাবস্ট্রিংয়ের দুর্দান্ত ব্যবহার :-)
ডিলান মিউস

7
কার্চিং ব্যবহার করুন:v=>a=>
ASCII- কেবল

3
আপনি কি substrপরিবর্তে ব্যবহার করতে পারেন ? আমি জানি যে দ্বিতীয় প্যারামিটারটি একটি পার্থক্য তৈরি করে, তবে প্রথমটি সম্পর্কে নিশ্চিত নয় ...
ডম হেস্টিংস

1
@ ডোমহাস্টিংস: হ্যাঁ, যদিও sliceএটি আরও ছোট হবে।
Yay295

5
@ ডোমহাস্টিংস না, উভয়ই substrএবং sliceস্ট্রিংয়ের শেষে থেকে গণনা হিসাবে একটি নেতিবাচক যুক্তিকে ব্যাখ্যা করে।
নীল

38

আমি কিছুক্ষণের জন্য এটি করতে চাইছিলাম ...

এইচটিএমএল + সিএসএস 491 487 485 বাইট

-4 বাইট কনর ও'ব্রায়েন
-2 বাইট ধন্যবাদ হিলিয়াম নিউক্লিকে মুক্তি দেওয়ার জন্য ধন্যবাদ

পৃষ্ঠা উইন্ডোর প্রস্থ এবং উচ্চতা হিসাবে ইনপুট নেওয়া হয়; ভিউডের সংখ্যা এবং প্রস্থ উত্তরগুলির সংখ্যা হ'ল।

<style>p{overflow:hidden;width:1ch}@media(max-aspect-ratio:70/2){p{width:1ch}}@media(max-aspect-ratio:70/3){p{width:2ch}}@media(max-aspect-ratio:70/4){p{width:3ch}}@media(max-aspect-ratio:70/5){p{width:4ch}}@media(max-aspect-ratio:70/6){p{width:5ch}}@media(max-aspect-ratio:70/7){p{width:6ch}}@media(max-aspect-ratio:70/8){p{width:7ch}}@media(max-aspect-ratio:70/9){p{width:8ch}}@media(max-aspect-ratio:7/1){p{width:9ch}}@media(max-aspect-ratio:70/11){p{width:10ch</style><p>**********

প্রবেশ করে আপনি এটি আপনার ব্রাউজারে চেষ্টা করতে পারেন

data:text/html,<style>p{overflow:hidden;width:1ch}@media(max-aspect-ratio:70/2){p{width:1ch}}@media(max-aspect-ratio:70/3){p{width:2ch}}@media(max-aspect-ratio:70/4){p{width:3ch}}@media(max-aspect-ratio:70/5){p{width:4ch}}@media(max-aspect-ratio:70/6){p{width:5ch}}@media(max-aspect-ratio:70/7){p{width:6ch}}@media(max-aspect-ratio:70/8){p{width:7ch}}@media(max-aspect-ratio:70/9){p{width:8ch}}@media(max-aspect-ratio:7/1){p{width:9ch}}@media(max-aspect-ratio:70/11){p{width:10ch</style><p>**********

একটি নতুন ট্যাবে url হিসাবে।


11
বাক্সের বাইরে চিন্তা করার জন্য +1 - এএইএম, বাক্সের কথা
ভাবুন

2
আপনার কি ক্লোজিং পি ট্যাগ লাগবে?
কনর ও'ব্রায়ান

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

@ কনরও ব্রায়ান: ভালো কথা!
Yay295

1
আপনার শেষ দু'জনেরও দরকার নেই }
betseg


12

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

v=>a=>"*".repeat((v/=a*70)<9?v+1:10)

কারিরিং করে 1 বাইট সংরক্ষণ করা হয়েছে, থেলথেলকোডারকে ধন্যবাদ


3
আপনি কি v=>a=>পরিবর্তে ব্যবহার করতে পারেন (v,a)=>?
TheLethalCoder

@ দ্য লেথলকোডার - আপডেট হয়েছে। ধন্যবাদ!
আর্নল্ড

2
এটা কি কাজ v=70, a=1করে না?
নীল

1
@ নীল - ঠিক আছে উত্তরগুলির সংখ্যা দর্শনের সংখ্যাটির সঠিক বিভাজক হলে এটি 1 পয়েন্ট দ্বারা বন্ধ রয়েছে। বা অন্য কথায় বলতে গেলে এটি পরবর্তী দৃশ্যের প্রত্যাশা করে। ;-)
আর্নল্ড

11

গণিত, 38 35 বাইট

StringRepeat["*",10,⌈#/#2/70⌉]&

তিনটি বাইটের জন্য @ মার্টিনইেন্ডারকে ধন্যবাদ


1
হ্যালো, এবং পিপিসিজিতে আপনাকে স্বাগতম! এটি একটি দুর্দান্ত উত্তর!
NoOneIsHere এ

নিবন্ধন করুনহেরা ধন্যবাদ! মূলত আমি ভাবছিলাম Clip, যার ওপির ক্ল্যাম্পের মতো প্রায় একই বাক্য গঠন রয়েছে তবে আমি দেখেছিলাম যে StringRepeatকাটা কাটার জন্য thirdচ্ছিক তৃতীয় যুক্তি রয়েছে।
u54112

3
বাম এবং ডান সিলিং বন্ধনীর জন্য ইউনিকোড অক্ষর রয়েছে যা আপনার প্রয়োজন 9 এর পরিবর্তে কেবল 6 বাইট তৈরি করে Ceiling[]
মার্টিন ইন্ডার

9

এক্সেল, 29 বাইট

আপনি যদি এক্সেলকে ভিবিএ এক্সেলের উপস্থাপনা হিসাবে গণনা করেন তবে আপনি ব্যবহার করতে পারেন

=REPT("*",MIN(1+v/(70*a),10))

রেফারেন্স সেলগুলির নাম কোথায় vএবং a


3
হাই, এবং পিপিসিজিতে আপনাকে স্বাগতম! এটি একটি সুন্দর প্রথম পোস্ট! এবং বৈধ।

হাইও @ ইস্টারলি আইআরকে উষ্ণ অভ্যর্থনার জন্য ধন্যবাদ :)
আনাস্তাসিয়া-রোমানোভা 秀

8

সিজেম, 18 15 14 বাইট

পিটার টেলরকে 1 বাইট এবং আদনানের ধন্যবাদ 3 বাইট সংরক্ষণ করা হয়েছে

'*A*q~d/70/m]<

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

'*A*            e# Push "**********"
    q~d/        e# Get the input and divide the two numbers
        70/     e# Divide by 70
           m]   e# Ceil, yielding x
             <  e# Slice the string, taking the first x elements

8

সি #, 68 49 48 বাইট

v=>a=>"**********".Substring((int)(10-v/a/70d));

এটি নীলের এই দুর্দান্ত উত্তরের সি # সংস্করণ ।

নীলকে ধন্যবাদ দিয়ে আরও 19 বাইট সংরক্ষণ করা হয়েছে


চেষ্টা করুন (int)System.Math.Floor(10-v/a/70)বা ঠিক (int)(10-v/a/70)
নীল

@ নীল দেখে মনে হচ্ছে আমাকে 70dএকা চলে যেতে হবে তবে আরও ভাল ধন্যবাদ ধন্যবাদ
TheLethalCoder

1
দুঃখিত, dসেখানে দেখেনি ।
নীল

আর একটি উত্তর যা v=>a=>
তরকারী

@ ব্রায়ান ম্যাকচাটন এমনকি সি
থ্যাঙ্কসে

7

জাভা 8, 57 বাইট

বাইটস সংরক্ষণ করতে ল্যাম্বডা ব্যবহার করে, উত্তরটি ফেরত দেওয়ার জন্য গণনা এবং সাবস্ট্রিংগুলি সম্পাদন করে।

(v,a)->"**********".substring(Math.max(0,(700*a-v)/70/a))

এটি পরীক্ষা করার জন্য আমার ক্লাস এখানে।

public class DifficultyCalculator{
    static interface h{ String f(int v, int a);}
    static void g(h H){
        System.out.print(H.f(163,2));System.out.println("\t**");
        System.out.print(H.f(548,22));System.out.println("\t*");
        System.out.print(H.f(1452,24));System.out.println("\t*");
        System.out.print(H.f(1713,37));System.out.println("\t*");
        System.out.print(H.f(4162,32));System.out.println("\t**");
        System.out.print(H.f(3067,15));System.out.println("\t***");
        System.out.print(H.f(22421,19));System.out.println("\t**********");
    }
    public static void main(String[] args) {
        g( // 70
            (v,a)->"**********".substring(java.lang.Math.max(0,(int)(10-v/70d/a)))
        );
    }
}

হালনাগাদ

  • -3 [16-08-19] ব্যবহৃত পূর্ণসংখ্যা বিভাগ
  • -10 [16-08-18] অপ্রয়োজনীয় আমদানি সরানো হয়েছে, @ অলিভিয়ারগ্রোওয়েরকে ধন্যবাদ !
  • -18 [16-08-17] মুদ্রণের পরিবর্তে স্ট্রিংটি ফিরে আসুন

2
চমৎকার, একটি জাভা উত্তর যা ট্রেন নয়!
ইসমাইল মিগুয়েল

4
java.lang.এটি ডিফল্ট অন্তর্ভুক্ত প্যাকেজ যেহেতু প্রয়োজন নেই ।
অলিভিয়ার গ্রাগোয়ার

আপনি সিলিং না বৃত্তাকার হয়!

1
@ অ্যাডভানসিড আমি এটি পরীক্ষা করেছি এবং System.out.println((int)2.99);মুদ্রণ করেছি 2এবং যেহেতু আমি 10 থেকে প্রাক-তলিত মানটি নিয়েছি এবং পরে এটি মেঝেতে ফেলেছি, এটি 10 ​​থেকে সিলিংটি সরিয়ে নেওয়ার মতোই
ননলাইনারফ্রুট

6

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

/70/0:9>42*c

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

ব্যাখ্যা

রাউন্ডিং আপ এবং ক্ল্যাম্পিং নিম্নরূপে x = v/a/70এক সাথে করা হয়: অ্যারের প্রতিটি উপাদানটির সাথে সংখ্যাটি তুলনা করা হয় [0 1 ... 9]। যে অ্যারেগুলির সংখ্যা অতিক্রম করেছে xতারা অ্যাসিরিস্টে পরিণত হবে এবং বাকী স্থানগুলি হবে।

/      % Take the two numbers implicitly. Divide. (Example: for inputs 3067, 15
       % we get 204.47)
70/    % Divide by 70 (we get 2.92)
0:9    % Push array [0 1  ... 9]
>      % See which of those are exceeded by the previous number (2.92 exceeds
       % 0, 1 and 2, so we get [1 1 1 0 ... 0]). This does the rounding up
       % and the clamping
42*    % Multiply by 42, which is the ASCII code of '*' (we get [42 42 42 0 ... 0])
       % Char 0 will be displayed as space
c      % Convert to char. Implicitly display

5

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

3 + 2 বাইট সংরক্ষণ এবং একটি ত্রুটি দ্বারা সংশোধন করা হয়েছে Leaky নুন ধন্যবাদ

lambda v,a:('*'*10)[:~-v/a/70+1]

নীল উত্তর অনুরূপ। পাইথন 2 পূর্ণসংখ্যা বিভাজন করে তা ব্যবহার করে।


ব্যর্থ কখন v=70এবংa=1
লিকি নুন

f=মুছে ফেলা হতে পারে
লিকি নূনের

v, aহয়ে উঠতে পারেv,a
Leaky Nun

ধন্যবাদ! এখন কাজ করা উচিত। এখন v = 0, a = 1 এর জন্য ভুল হতে পারে, তবে এই কেসটি থাকতে পারে না, তাই না?
ম্যাথিউজ

এটি v = 0, a = 1 এর জন্য ভুল হবে না।
লিকি নুন

5

হাস্কেল, 35 বাইট

v#a=[1..min(ceiling$v/a/70)10]>>"*"

[1..min(ceiling$v/a/70)10]1 থেকে গণিত অসুবিধা (অসুবিধা 0 এর ফাঁকা তালিকা) পর্যন্ত একটি পরিসীমা তৈরি করে। a>>bতালিকাটি b length aপ্রায়শই পুনরাবৃত্তি করে ।



4

সি #, 97 89 87 77 42 41 বাইট

v=>a=>new string('*',(v/=a*70)<9?v+1:10);

অ্যাডমকে 10 টি বাইট সংরক্ষণ করা হয়েছে

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


আপনি প্রতিস্থাপন (int)System.Math.Ceiling(v/a/70d)করে পুরোটা অনেকটা বাঁচাতে পারবেন (v+69)/(70*a)... নোট করুন যে v / a নেতিবাচক হতে পারে না, তাই cঅনেকগুলি সরলীকৃত করা যেতে পারে কারণ এটির জন্য আপনাকে পরীক্ষা করার দরকার নেই।
টম ভ্যান ডার জ্যান্ডেন

4

পার্ল, 35 32 বাইট

say"*"x(10-($-=10-pop()/70/pop))

বিপরীত ক্রমে তর্কগুলি -Eসক্রিয় করতে sayএবং দিতে ব্যবহার করুন :

perl -E 'say"*"x(10-($-=10-pop()/70/pop))' 2 163

যদি STDIN- এ যুক্তিগুলি অনুমোদিত হয় তবে নিম্নলিখিত 29 বাইট থাকে:

(echo 163; echo 2) | perl -pe '$_="*"x(10-($-=10-$_/70/<>))'

আমি ঠিক মনে করতে পারি না এটি যদি একই রকম হয় তবে আপনি কি এর 0|পরিবর্তে থাকতে পারেন $-=? (ভাবনা অপারেটরের অগ্রাধিকারটি সঠিক নাও হতে পারে ...)
ডম হেস্টিংস

@ ডোমহাস্টিংস 0|একটি নেতিবাচক সংখ্যাটিকে একটি বিশাল সংখ্যায় পরিণত করে (শূন্য দশকের দিকে পরিচালিত করে *), $-=0 এ গিয়ে ক্লিপ করে (দশ দশকের দিকে এগিয়ে যায় *), যা আমার এখানে দরকার
টন হসপেল

আহ, অবশ্যই, এটি কেবলমাত্র ইতিবাচক পূর্ণসংখ্যার! মনে রাখার জন্য ধন্যবাদ. আমি নিশ্চিত যে আমি যখন এটির প্রয়োজন হবে তখনও আমি তা ভুলে যাব ... 😀
ডম হেস্টিংস

4

আর, 68, 50 52 বাইট

f=function(v,a)cat(rep("*",1+min(v/a/70,10)),sep="")

rep স্পষ্টভাবে 0 সংখ্যার উপর একটি মিনিট রাখে places

আমার ত্রুটি চিহ্নিত করার জন্য @ প্লানাপাস এবং @ আনাস্তাসিয়া-রোমানোয়া 秀 ​​কে ধন্যবাদ Thanks


আপনি অপসারণ করতে পারেনf=
সাইয়েস

1
আপনার কোডের ফলাফলগুলি টেস্ট ডেটার সমান নয়। আপনি 2 আরো বাইট যোগ করা উচিত 1+পর min(একই আউটপুট পেতে
Anastasiya Romanova,秀


3

জাভাস্ক্রিপ্ট ES6, 48 বাইট

a=>b=>"*".repeat(Math.ceil(Math.min(a/b/70,10)))

3

সি, 54 , 51 , 50 , 49 বাইট

Assuming যে vইতিবাচক বা শূন্য এবং aইতিবাচক, x < minনিবন্ধন ক্ষেত্রে পূরণ হয় না, যেহেতু কোন উপায় সিলিং অপারেশন ফলাফলের নেতিবাচক হতে পারে না। অতিরিক্ত হিসাবে, অ-নেতিবাচক মানগুলিতে পূর্ণসংখ্যার গণিতগুলি সর্বদা ফলাফলের মেঝে দেয়, তাই আমরা 1সিলিংটি যুক্ত করতে যোগ করি ।

এই সমাধানটির একটি writeফাংশন প্রয়োজন , লিনাক্সে কমপক্ষে কাজ করে।

F(v,a){write(1,"**********",(v/=a*70)>9?10:v+1);}

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

int main() {
  F(163, 2);
  putchar('\n');
  F(548, 22);
  putchar('\n');
  F(1452, 24);
  putchar('\n');
  F(1713, 37);
  putchar('\n');
  F(4162, 32);
  putchar('\n');
  F(3067, 15);
  putchar('\n');
  F(22421, 19);
  putchar('\n');
}

1
1 বাইট সংরক্ষণের (v=v/a/70)সাথে প্রতিস্থাপন করা (v/=a*70)
সিলিংক্যাট

@ Cilingcat ভালো লাগছে!
স্টেফানো সানফিলিপো

2

জাভাস্ক্রিপ্ট: 82 73 বাইট

 (v,a)=>console.log("*".repeat(Math.min(Math.max(0,Math.ceil(v/a/70),10)))
  • অ্যাডাম ইঙ্গিত করার পরে আমি কিছুটা বাইট সংরক্ষণ করেছি আমি 700/10 * 10 = / 70 উপেক্ষা করেছি এবং প্যারেন্সগুলি অপসারণ করেছি

@ অ্যাডম এডিট এর সাথে কি?
মার্টিন এন্ডার

@ অ্যাডম লোকেরা যদি উত্তরগুলির কোনও উত্তর পড়ে তবে তাদের কাছে ইতিমধ্যে স্পয়লার রয়েছে। পিছনে ঘুরছে, কারণ বর্তমানে সেই বাক্যটি মোটামুটি অকেজো এবং এটি মানুষকে পুনর্বিবেচনার ইতিহাসে ক্লিক করে তোলে।
মার্টিন ইন্ডার

@ অ্যাডম এটাই আমি সাধারণত নিজেকে ব্যবহার করি তবে বর্তমান সংস্করণে আমি কোনও ক্ষতি দেখতে পাচ্ছি না।
মার্টিন এন্ডার

console.logএটির দরকার নেই , ফিরে আসাই ঠিক আছে। আপনি এর v=>a=>পরিবর্তে একটি বাইট সংরক্ষণ করতে পারেন(v,a)=>
সাইওস

2

ডায়ালগ এপিএল , 15 বাইট

'*'⍴⍨10⌊⌈⎕÷70×⎕

'*'⍴⍨চরিত্রটি এটিকে বহুবার পুনরাবৃত্তি করেছে:
10⌊মিনিট (10, ... সত্তর বারের ইনপুট
⎕÷দ্বারা বিভক্ত ইনপুট
70×

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


মেন্ডোর অ্যালগরিদম ব্যবহার করা কি গল্ফিয়ার হবে?
লিকি নুন

@ লিক্যনুন আমি এটি ভাবি না:'*'/⍨(⎕÷70×⎕)>⍳10
অ্যাডাম

2

জেলিফিশ , 18 বাইট

P
#'*
mM/%i
10 %70

ফর্ম্যাটে ইনপুট নেয় [a v]এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

  • %পারস্পরিক হয়, সুতরাং %701/70।
  • i দ্বিমূলক অ্যারে হিসাবে ইনপুট।
  • /%ইনপুট সহ iএবং প্রাথমিক মান সহ ফ্লিপড বিভাগ দ্বারা %70অ্যারে হ্রাস করে । অন্য কথায়, এটি v / (a ​​/ (1/70)) গণনা করে , যা v / (70 * a) এর সমান ।i%70
  • Mএই মানটির সিলিংটি mনেয় এবং এটি সর্বাধিক নেয় 10
  • #'*আক্ষরিক *চরিত্রটি বহুবার পুনরাবৃত্তি করে ।
  • P উদ্ধৃতি ছাড়া ফলাফল মুদ্রণ।

2

ম্যাটল্যাব, 34 33 বাইট

যেহেতু আমি এই চ্যালেঞ্জটি খুব পছন্দ করি, এখানে ম্যাটল্যাবের জন্য একটি রয়েছে (হোয়াইটস্পেসগুলি অনুসরণ করে আউটপুটগুলি):

@(v,a)[(ceil(v/a/70)>0:9)*42,'']

@ লুইস মেন্ডোর উত্তর দ্বারা অনুপ্রাণিত। একটি বাইট সংরক্ষণ করার জন্য @ পাজোনকে ধন্যবাদ


চমৎকার পন্থা! আমার কাছে পোস্ট করার জন্য একটি 40-বাইট ছিল ... বিটিডাব্লু, আপনি এর [... '']পরিবর্তে একটি বাইট সংরক্ষণ করতে পারেন char(...)। এবং ceilশেষে যখন আপনি পূর্ণসংখ্যার সাথে তুলনা করছেন তখন আপনার কি সত্যিই দরকার ?
pajonk

2
ধন্যবাদ @ পাজোনক - আমার কোডটি আরও কম পঠনযোগ্য করার জন্য এই সাইটে কিছু জিনিস সত্যই শিখতে পারে;)
ম্যাথিউজ

2

এম 4, 136 135 বাইট

define(r,`ifelse($1,0,,eval($1>9),1,*`r(9)',*`r(decr($1))')')define(f,`r(ifelse(eval($1%($2*70)),0,eval($1/$2/70),eval($1/$2/70+1)))')

এমন ম্যাক্রো সংজ্ঞা দেয় fযা গ্রহণ করে vএবং aসঠিক আউটপুটটিতে প্রসারিত হয়। প্রোগ্রামটির বেশিরভাগটি সিলিংয়ের একটি বাস্তবায়ন।


2

ডিসি, 110 108 104 98 বাইট

কাঁচা কাটানো কোনও জিনিস নয় বলে এটি একটি ঘোলাটে। এছাড়াও, ডিসি স্ট্রিংগুলি ব্যবহার করে না। আমি কেবল সত্যিই একটি স্ট্রিংয়ের জন্য অপেক্ষা করছিলাম যা <5 ঘন্টা কোডিংয়ের। প্লাস দিকে, আমি শেষ পর্যন্ত লুপগুলির মতো সাধারণ কন্সট্রাক্টসগুলি লিখতে শুরু করি। এছাড়াও রাউন্ডিং / সিলিং তৈরি করতে হয়েছিল, তাই এর জন্য ধন্যবাদ।

[42P]sd[dsi[li0!=dli1-dsi0!=L]dsLx]sl[Isi[li0!=dli1-dsi0!=L]dsLx]sg[1+]saIk/70*0k1~0!=adI>ldI!>gIP

ব্যাশে আমন্ত্রিত:

echo 'v a (above)'|dc
# Wholly:
>> echo '163 2 [42P]sd[dsi[li0!=dli1-dsi0!=L]dsLx]sl[Isi[li0!=dli1-dsi0!=L]dsLx]sg[1+]saIk/70*0k1~0!=adI>ldI!>gIP'|dc
# outputs:
**
>> 

কোড (এবং উপরের) সাথে vএবং aউপরে তাদের নিজ নিজ সহযোগীদের সাথে প্রতিস্থাপন করা হচ্ছে । একক উদ্ধৃতি গুরুত্বপূর্ণ (অন্যথায় আপনি বাশের ইতিহাস স্টাফ পাবেন)।


ব্যাখ্যা:

[42P]sd   # Here we store a macro in register d to print 1 * without a newline

[dsi[li0!=dli1-dsi0!=L]dsLx]sl # Store the "less than" case, a for loop which
                        # uses the top-of the stack as it's number of iterations.
[Isi[li0!=dli1-dsi0!=L]dsLx]sg # Store the "greater than" case. It's the above,
                        # but it puts 10 on the stack to use instead.

[1+]sa # Store a macro to add 1 to whatever is the top-of-stack.


Ik # Set precision at non-zero to allow decimal division

/70* # Divide the top two of the stack, v/a; multiply by 70 (`/700*10` == `/70`)
             # dc is postfix and stack-based, so operators come after operands.

0k1~0!=a     # This is a ceiling function.
|> 0k  # set precision to 0 to perform integer division
|> 1~  # push the quotient of integer division by 1, and then the remainder. (r is top)
|> 0!=a # If the top-of-stack (decimal part) is not 0, add 1 to the quotient

dI>ldI!>g # Conditional statement
|> dI>l  # (d)uplicate the top, push 10 on. If 10 > the old top, execute the `l`ess-than
          # case, which loops top-of-stack times.
|> dI!>g # Complement of the above, using the `g`reater-than to loop 10 times.

IP # print a newline

এটি সম্ভবত আরও গল্ফ-সক্ষম, তবে অকালিক অনুকূলতা এড়াতে আমি এটি শেষ করার চেষ্টা করছিলাম was

  • সঞ্চয়-লোডিংয়ের পরিবর্তে সদৃশ-সঞ্চয় দ্বারা 2 বাইট সংরক্ষণ করা হয়েছে
  • 4 বাইট 70 দ্বারা বিভাজন সংরক্ষণ করেছে
  • ড্যানিরোর পরামর্শগুলি থেকে 6 বাইট (অ-স্ট্রিং, পরিবর্তে ASCII সংখ্যা; 10 => আমি)

[*]n=> 42P। প্রতিটি উদাহরণ 10দ্বারা প্রতিস্থাপন করা যেতে পারে I[]p=>IP
ডানিরো

2

হাস্কেল, 35 বাইট

এই সমাধানটি যেমন লাইকোনির উত্তর থেকে সম্পূর্ণ পৃথক পৃথক এটি তুচ্ছ কিছু হিসাবে এটি পেতে। তবুও স্কোর (আপাতত) ঠিক একই রকম।

v%a=take(ceiling$v/a/70)[0..9]>>"*" 

এটি দশটি তারা উত্পাদন করে, তারপর কিছুকে শেভ করে। অসীম তালিকা সহ নির্বিচারে অসুবিধা বাড়ানো সহজ।

আমি আরও একটি বাইট শেভ করতে পরিচালিত করেছি। সমস্ত পরীক্ষার ক্ষেত্রে কাজ করার সময়, এটি সাধারণভাবে সঠিক হওয়া উচিত নয়।

v%a=take(1+div v(a*70))[0..9]>>"*"

2

টিআই-বেসিক, 39 বাইট

Prompt V,A
sub("**********",1,max(0,min(10,int(V/A/70)+1

1

পাওয়ারশেল ভি 2 +, 47 বাইট

-join(('*'*11)[1..($args[0]/$args[1]/70+.499)])

কিছুটা @ নীলের জাভাস্ক্রিপ্ট উত্তরের একটি বন্দর ।

ইনপুট নেয় $argsএবং তাদের ভাগ করে, তারপরে এটিকে ভাগ করে 70এবং যোগ করে .499। পাওয়ারশেল যেহেতু ব্যাঙ্কারের গোল করে , তাই এটি কার্যকরভাবে ceilযথাক্রমে দুটি দশমিক পয়েন্ট। যদি অতিরিক্ত নির্ভুলতা প্রয়োজন হয় তবে প্রয়োজনীয় হিসাবে অনেক অতিরিক্ত 9গুলি ব্যবহার করুন।

পাশাপাশি, এটি 1..একটি স্ট্রিংয়ের মধ্যে একটি পরিসীমা সূচক তৈরি করে। স্ট্রিং '*'*11, অর্থাত্ '***********'। এটি একটি চর-অ্যারের ফলাফল, সুতরাং আমরা -joinএকসঙ্গে এটি একটি স্ট্রিং ফিরে। সেই স্ট্রিংটি পাইপলাইনে রেখে গেছে এবং আউটপুট অন্তর্ভুক্ত। নীলের উত্তরের মতো এটিও আউটপুটটিকে 1 থেকে 10 তারার মধ্যে কার্যকরভাবে "ক্ল্যাম্পস" করে।

পরীক্ষা স্যুট

PS C:\Tools\Scripts\golfing> @(@(163,2), @(548,22), @(1452,24), @(1713,37), @(4162,32), @(3067,15), @(22421,19))|%{($_-join', ')+" -> " +(.\difficulty-of-a-question $_[0] $_[1])}
163, 2 -> **
548, 22 -> *
1452, 24 -> *
1713, 37 -> *
4162, 32 -> **
3067, 15 -> ***
22421, 19 -> **********

1

পাইথন 3, 69 68 বাইট

আমি পাইথন 2 উত্তরটি অনুলিপি করতে চাইনি, তাই আমার কিছুটা দীর্ঘ।

from math import*
x=lambda v,a:print(max(0,min(ceil(v/a/70),10))*'*')

1 জন বাইট সংরক্ষণ করা হয়েছে প্রোগ্রাম ম্যানকে ধন্যবাদ thanks


আপনার আমদানি অন্তর্ভুক্ত করার দরকার নেই তবে from math import *একটি দম্পতি বাইট সংরক্ষণ করতে হবে
ননলাইনারফ্রুট

বাইট গণনাতে আমদানি অন্তর্ভুক্ত করা হয়েছে
কোডি

অনুমান অনুসারে, 0 হ'ল সর্বনিম্ন তারা, 1 নয় 1. এছাড়াও import*কোনও স্থান না দিয়ে পুরো 1 বাইট সংরক্ষণ করুন ।
প্রোগ্রামের লোকটি

উফ আমি ন্যূনতম ভুল পড়েছি। টিপটির জন্য ধন্যবাদ
কোডি

1
@ প্রোগ্রামামম্যান যদিও অনুমান অনুসারে 0 ন্যূনতম, অ-নেতিবাচক, বি-শূন্য সংখ্যার বিভাজন এবং গুণন করার গ্যারান্টিযুক্ত! = 0, এবং সিলিং অপারেটর 0-1-1 এর মধ্যে কিছু তৈরি করবে এবং এটি 1 করবে। যদিও আমি মনে করি সেখানে থাকতে পারে 0 টি দর্শনগুলির ক্ষেত্রে হয়ে উঠুন, তবে 0 টি দর্শন 0 টি উত্তরকে বোঝায় যা অবধারিত আচরণের দিকে পরিচালিত করে (0 দ্বারা বিভাজন)। এটি সম্ভবত প্রমাণযোগ্য যে 0 অসম্ভব এবং এটিরও উল্লেখ করা উচিত নয়।
বিতরণ করুন

1

আসলে, 14 বাইট

:70a\\u9ukm'**

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

0 টি ভিউ এবং 0 টি উত্তর অসম্ভব এবং এইভাবে এর সুবিধা গ্রহণ করে ceil(v/a) > 0

ব্যাখ্যা:

:70a\\u9ukm'**
:70             push 70 ([70 a v])
   a            invert stack ([v a 70])
    \\          integer division twice ([v//a//70])
      u         add 1 ([v//a//70 + 1])
       9uk      push 10, make stack into list ([[v//a//70+1, 10]])
          m     minimum of list
           '**  push "*", repeat
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.