এত কম সংখ্যার বিভাজন


15

একটি প্রোগ্রাম বা ফাংশন যা ধনাত্মক পূর্ণসংখ্যা লাগে লিখুন a, bএবং c, এবং কপি করে প্রিন্ট বা আয় a/bকরতে cদশমিক স্থান, অপারেশন ব্যবহার - ধনাত্মক পূর্ণসংখ্যা উপর * /% [যোগ করুন, বিয়োগ, গুণ, ভাগ, সামঁজস্যবিধান]: আপনি সব ব্যবহার করতে পারেন আপনার ভাষা অনুমতি দেয়, তবে ভাসমান পয়েন্ট সংখ্যাগুলিতে নয়। A, b, c এর ব্যাপ্তিটি আপনার ভাষায় স্বাক্ষরবিহীন পূর্ণসংখ্যার জন্য অনুমোদিত ব্যাপ্তি। সংখ্যাটি মুদ্রণের জন্য শেষ অঙ্কে ছাঁটা হবে (তাই হবে না round)।

এর অর্থ হ'ল যদি আপনার ভাষাতে কোনও পূর্ণসংখ্যার ধরণ না থাকে (কেবল ভাসমান), আপনি কেবলমাত্র ইতিবাচক পূর্ণসংখ্যার হিসাবে এই ভাসমান সংখ্যাগুলি ব্যবহার করে অংশ নিতে পারবেন। এই অনুশীলনের ক্লুটি হ'ল ফাংশনটি লিখতে হবে যা কেবলমাত্র "স্বাক্ষরযুক্ত] পূর্ণসংখ্যার উপর অপারেশন + - * /% ব্যবহার করে একটি ফ্লোট পয়েন্ট বিভাগে অঙ্কগুলি সন্ধান করে।

উদাহরণ

  • print(1,2,1) মুদ্রণ হবে 0.5
  • print(1,2,2) মুদ্রণ হবে 0.50
  • print(13,7,27) মুদ্রণ হবে 1.857142857142857142857142857
  • print(2,3,1) মুদ্রণ হবে 0.6
  • print(4,5,7) মুদ্রণ হবে 0.8000000
  • print(4,5,1) মুদ্রণ হবে 0.8
  • print(9999,23,1) মুদ্রণ হবে 434.7
  • print(12345613,2321,89) আপনার ভাষাতে 32 বিট স্বাক্ষরবিহীন থাকলে মুদ্রণ করা হবে 5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী। আমি দুঃখিত যদি এটি পরিষ্কার না হয় ... আমি ভাষাও জানি না, শব্দগুলি ভালভাবে মনে রাখি না ... আইডিয়ন ডটকমের সাথে একটি লিঙ্ক বা অন্য কোনও জায়গার সাথে উত্তরটি সহজেই চেষ্টা করে নেওয়া ভাল especially প্রস্তাবিত থেকে কিছু ইনপুট পৃথক পরীক্ষা।


1
A, b, c এর পূর্ণসংখ্যা কত?
টন হসপেল

@ টপ হসপেল এ, বি, সি এর পরিসীমাটি আপনার ভাষায় স্বাক্ষরযুক্ত পূর্ণসংখ্যার জন্য পরিসীমা হতে পারে: উদাহরণস্বরূপ যদি এটি একটি 32 বিট স্বাক্ষরযুক্ত হয় তবে এটি 0..0xFFFFFFF হবে তবে সি> = 0xFFFFFF এ এত বড় আউটপুট হবে কিছুটা ধীর হয়ে যাও ...
রোজলুপি

2
এটি একটি বৃত্তাকার ফাংশন - বা আরও স্পষ্টভাবে, এটি সঠিকভাবে নির্দিষ্ট করার জন্য এটি একটি গোলাকার ফাংশন হওয়া দরকার। উদাহরণস্বরূপ সঠিক উত্তরটি কী হবে তা বর্তমানে অস্পষ্ট (1,2,0)Meta.codegolf.stackexchange.com/a/5608/194
পিটার টেলর

1
এই প্রশ্নটি পুনরায় খোলার জন্য দুঃখিত; আমি মনে করি পিটার টেলর যে সমস্যাটি দেখিয়েছেন, ব্যতীত এটি আবার খোলার জন্য প্রায় প্রস্তুত। আউটপুট ফো (1,2,0)কি?
ইটিএইচ প্রডাকশনগুলি 12:58 এ 20

2
প্রকৃতপক্ষে (1,2,0)অপ্রাসঙ্গিক হওয়া উচিত যেহেতু 0ধনাত্মক পূর্ণসংখ্যা নয়। এবং আমি এটি পছন্দ চান তাহলে যে ভালো গ দেহাবশেষ যেহেতু আমি একটি সংযোজন সম্পর্কে ভাবতে হচ্ছে না পছন্দ .বা না
টন Hospel

উত্তর:


5

05 এ বি 1 ই , 17 13 11 19 14 বাইট

ফর্ম ইনপুট b, a, cগ্রিমে
ধন্যবাদ 5 বাইট সংরক্ষণ করা

‰`¹+I°*¹÷¦'.sJ

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


আমি কেবল 13,7,27 ইনপুট দিয়ে অনলাইনে চেষ্টা করেছি এবং উত্তরটি সঠিক নয়
ম্যাথিউ জে

@ শিগাজারু: এটি পরীক্ষার ক্ষেত্রে একই ফলাফল দেয়। আপনি খেয়াল করেছেন ইনপুটগুলির ক্রমটি কি b,a,c?
এমিগানা

আমি বোতাম "অনলাইন ব্যবহার করে দেখুন" যেখানে এই বিভাগের নেই দেখুন: 12345613/2321 89 সংখ্যা, কিন্তু ফলাফলের সেখানে 5319,0922 পরিবর্তে 5319,922 যেমন কিছু ... ...
RosLuP

1
15:‰`I°*¹÷I°+¦'.sJ
গ্রিমি

2
14:‰`¹+I°*¹÷¦'.sJ
গ্রিমি

4

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

(a#b)c|s<-show$div(a*10^c)b,l<-length s-c,(h,t)<-splitAt l s=['0'|l<1]++h++['.'|c>0]++t

ব্যবহারের উদাহরণ: (13#7)27-> "1.857142857142857142857142857"

23 হ্যান্ডেল করতে বাইট c==0কেস এবং ভালো জিনিস পরিবর্তে একটি শূন্য ব্যবহার .5

এটি কীভাবে কাজ করে: একক aদিয়ে 10^cভাগ করে ভাগ করুন b, স্ট্রিংয়ে রূপান্তর করুন, যেখানে splitোকাতে হবে সেখানে বিভক্ত করুন ., উভয় অংশকে একটি .মধ্যবর্তী অংশে যুক্ত করুন এবং প্রান্তের কেসগুলি ঠিক করুন।


4

পার্ল 6 ,  58 57 55  48 বাইট

{(($^a.FatRat/$^b*10**$^c).Int.FatRat/10**$c).base(10,$c)}
{(Int($^a.FatRat/$^b*10**$^c).FatRat/10**$c).base(10,$c)}
{base Int($^a.FatRat/$^b*10**$^c).FatRat/10**$c: 10,$c}
{base ($^a*10**$^c div$^b).FatRat/10**$c: 10,$c}

যা মোটামুটি বিরক্তিকর তা হ'ল {($^a.FatRat/$^b).base(10,$^c)}এটি নিকটতম মানের কাছে গোল করার অনুমতি দেওয়া হলে এটি সংক্ষিপ্ত করা যেতে পারে ।

ব্যাখ্যা:

# bare block lambda with 3 placeholder parameters 「$^a」, 「$^b」 and 「$^c」
{
  (
    (

      # create an Int containing all of the digits we care about
      $^a * 10 ** $^c div $^b

    ).FatRat / 10**$c  # turn it into a Rational

  ).base( 10, $c )     # force it to display 「$c」 digits after the decimal point
}

আমি পার্ল 6 এর সাথে পরিচিত নই, তবে যৌক্তিকতার বিভাগ নয় (...).FatRat / 10**$x? আপনাকে কেবল পূর্ণসংখ্যা ভাগ করার অনুমতি দেওয়া হয়েছে।
নিমি

@nimi একটি মূলদ দুটির সঙ্গে একটি ক্লাস হয় ints
ব্র্যাড গিলবার্ট

গণিত অপারেটরদের কেবলমাত্র পূর্ণসংখ্যার ধরণের জন্য অনুমোদিত, অন্য সংখ্যাগত প্রকারের জন্য নয়। উদ্ধৃতি: "এই অনুশীলনের ক্লু ... ফাংশনটি লেখার জন্য ... [স্বাক্ষরযুক্ত] পূর্ণসংখ্যার উপর শুধুমাত্র অপারেশন + - * /% ব্যবহার করে।"
নিমি

@ নিমিমি তাই যদি আমি যুক্তি সম্পর্কিত একটি সংশোধনী লিখি, এবং একটি যোগ না করি does Realবা does Numericএটি অনুমোদিত হবে? আমি যদি এই ভূমিকাগুলি সরিয়ে দেওয়ার জন্য বিদ্যমান বর্গকে (বানর প্যাচ) বাড়িয়ে তুলি, তবে কি তার অনুমতি দেওয়া হবে?
ব্র্যাড গিলবার্ট

জানিনা। আমি আগে যেমন বলেছিলাম স্পেকটি পড়েছি: +-*/%কেবল সরল পূর্ণসংখ্যার প্রকারের সাথে। "প্লেইন পূর্ণসংখ্যা" কার্যকারিতার দিক থেকে (সবার আগে: পূর্ণসংখ্যা বিভাগ) অভ্যন্তরীণ উপস্থাপনের নয়। আপনি কি মনে করেন যে এটি কোনও সফ্টওয়্যার ভাসমান পয়েন্ট লাইব্রেরি ব্যবহার করার অনুমতি দিয়েছে, যা (নাম সত্ত্বেও) অভ্যন্তরীণ উপস্থাপনের জন্য কেবল পূর্ণসংখ্যা ব্যবহার করে?
নিমি

3

পার্ল, 55 বাইট

জন্য +3 অন্তর্ভুক্ত -p

STDIN এ এক লাইনে a এবং b দিন, পরের দিকে c

division.pl
1 26
38
^D

division.pl:

#!/usr/bin/perl -p
eval'$\.=($_/$&|0)."."x!$\;$_=$_%$&.0;'x(/ .*/+<>)}{

$_/$&একটু বিতর্কিত হয়। আমি আসলে সেখানে একটি পূর্ণসংখ্যা বিভাগ চাই তবে পার্লের বিশেষ মডিউলগুলি লোড না করে তা নেই। সুতরাং এটি সাময়িকভাবে একটি অ-পূর্ণসংখ্যার যা আমি তত্ক্ষণাতভাবে কাটা (ব্যবহার করে |0) কেটে ফেলছি তাই আমি পূর্ণসংখ্যা দিয়ে শেষ করব একটি পূর্ণসংখ্যা বিভাগ দেবে। ($_-$_%$&)/$&সাময়িকভাবে অ-পূর্ণসংখ্যার মান না রাখার জন্য এটি আবারও লিখিত হতে পারে (এটি অভ্যন্তরীণভাবে এখনও ভাসমান হয়ে থাকবে)


আপনি কি $-কেবল এটি তৈরি করতে ব্যবহার করতে পারেন? (আমি মনে করি এটির মিশ্রণ / সর্বাধিক নিয়ন্ত্রণের সীমাবদ্ধতা রয়েছে এবং আমি নিশ্চিত যে আপনি এটি ইতিমধ্যে বিবেচনা করেছেন তবে এটি যাচাইয়ের পক্ষে মূল্যবান!)
ডম হেস্টিংস

@ ডোমহাস্টিংস একটি ভাসমান পয়েন্ট বিভাগ করার পরে এটি একটি ছাঁটাই হবে। পার্লের কেবল ছাড়া পূর্ণসংখ্যার বিভাগ নেইuse integer
টন হসপেল

আহ, সুতরাং এটি কেবল মুখোশযুক্ত $-, জেনে রাখা ভাল। ধন্যবাদ!
ডম হেস্টিংস

3

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

f=(a,b,c,d=".")=>~c?(a/b|0)+d+f(a%b*10,b,c-1,""):d

(a/b|0)ভাসমান বিভাগ সম্পাদন করে তবে সাথে সাথে একটি পূর্ণসংখ্যায় কাস্ট করে। যদি এটি অনুমোদিত না হয় তবে আমাকে জানান।


3

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

সংখ্যার জন্য স্ট্রিংগুলির সাথে কাজ করে যা এর চেয়ে আরও বড় মান হতে পারে PHP_INT_MAX

list(,$n,$d,$c)=$argv;$a=str_split($n);while($a){$n.=array_shift($a);if($n>=$d||$r)$n-=$d*$r[]=$n/$d^0;}if(!$r)$r[]=0;if($c)$r[]=".";while($c--){$n*=10;$n-=$d*$r[]=$n/$d^0;}echo join($r);

আমার আর কোনও সুযোগ নেই 13/7 এর পরে সংক্ষিপ্ত করে 1.8571428571429 হয় এবং আমি 27 দশমিক স্থানের সাথে পরীক্ষার ক্ষেত্রে পৌঁছায় না

এইভাবে 36 বাইট অনুমোদিত নয়

<?=bcdiv(($z=$argv)[1],$z[2],$z[3]);

ওপি অনুসারে ভাসা বিভাগের অনুমতি নেই
মালটিসেন

@ মাল্টেসেন দুঃখিত আমি একটি রোলব্যাক করি I আমি একটি সংক্ষিপ্ত সমাধান খুঁজতে এতই ভয় পেয়েছিলাম যে এটির স্পষ্টির বিপরীতে আমি তা স্বীকার করতে পারি না।
জার্গ হালসারম্যান

2

পাইথ - 21 19 18 16 14 বাইট

ইনপুট ফর্ম্যাটটি সন্ধান করবে, যা গোছাটি সংরক্ষণ করতে পারে।

j\.c`/*E^TQE]_

টেস্ট স্যুট । (পিএস ২ one টি অনলাইনে শেষ হয় না, সুতরাং আমি এর পরিবর্তে 10 করেছি)।


@ এমিগানাও এটি 0ইতিবাচক পূর্ণসংখ্যক নয় (যদিও c=0
অপেরা

@ টনহোস্পেল: আহ, সত্যই। আমি উদাহরণগুলির দিকে তাকিয়ে ছিলাম। আমি তখন আমার উত্তরটি সংক্ষিপ্ত করতে পারি :)
এমিগানা

দশমিক পয়েন্টের পরে শীর্ষস্থানীয় 0 রয়েছে এমন সংখ্যার সাথে কাজ করে না, উদাহরণস্বরূপ 2/21 থেকে 10 দশমিক।
এমিগানা 21


এমিনিগা 0.09 এর পরিবর্তে ... 10 দশমিক সংখ্যাযুক্ত 2/21 ... 0.9 মুদ্রণ করুন ...
রোজলুপ

2

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

ETH প্রডাকশনগুলির জন্য 2 বাইট সংরক্ষণ করা।

অন্তর্ভুক্ত বিভাগ সর্বদা একটি পূর্ণসংখ্যার ফলাফল।

f=(a,b,n,s)=>~n?f((q=(a-a%b)/b,a%b*10),b,n-1,s?s+q:q+'.'):s

console.log(f(13,7,27))


mপুরোপুরি এড়িয়ে যাওয়া কি এখনও কাজ করবে? f=(a,b,n,s)=>n+1?f((q=(a-a%b)/b,a%b*10),b,n-1,s?s+q:q+'.'):s60 বাইট হয়।
ETH প্রোডাকশনগুলি

@ ইথ প্রডাকশনস - সত্যই। ধন্যবাদ!
আর্নল্ড

2

জাভা 7, 105 বাইট

import java.math.*;String c(int...a){return new BigDecimal(a[0]).divide(new BigDecimal(a[1]),a[2],3)+"";}

অবরুদ্ধ এবং পরীক্ষার কোড:

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

import java.math.*;
class M{
  static String c(int... a){
    return new BigDecimal(a[0]).divide(new BigDecimal(a[1]), a[2], 3)+"";
  }

  public static void main(String[] a){
    System.out.println(c(1, 2, 1));
    System.out.println(c(1, 2, 2));
    System.out.println(c(13, 7, 27));
    System.out.println(c(2, 3, 1));
    System.out.println(c(4, 5, 7));
    System.out.println(c(4, 5, 0));
    System.out.println(c(9999, 23, 0));
    System.out.println(c(12345613, 2321, 89));
  }
}

আউটপুট:

0.5
0.50
1.857142857142857142857142857
0.6
0.8000000
0
434
5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466

আমি এটি বৈধ বলে মনে করি না, কারণ এটি মূলত বলা হয় divideএবং না হলেও এটি মূলত ভাসমান-পয়েন্ট বিভাগ /
করভাস_192

@ করভাস_192 আমার পরে পোস্ট করা আরেকটি মুছে ফেলা জাভা উত্তরটির যুক্তি ছিল, যা আমি এখানে অনুলিপি করব (এই ব্যাখ্যার ক্রেডিট @ সোক্র্যাটিকফোনিক্সে যায় ): " এটি কীভাবে কাজ করে: জাভা বিগডিসিমালসকে স্কেল সহ বিগইন্টিজার হিসাবে প্রয়োগ করা হয়। এটি প্রযুক্তিগতভাবে ভাসমান বিন্দু, তবে বিগআইন্টিজার এবং বিগডিসিমাল অবজেক্টগুলি কেবলমাত্র intসংখ্যাসূচক মান সংরক্ষণ করতে টাইপ ব্যবহার করে that (কী দুর্দান্ত নয়? বিগইন্টিজার অঙ্কগুলির মধ্যে একটি int[]। 1,2,5 base বেস 10-তে 125. I আমি নিশ্চিত না যে বিগইন্টিজারের অঙ্কগুলি আসলে কী ভিত্তিতে রয়েছে তবে আমি অনুমান করব এটি এটি 10 ​​এরও বেশি ""
কেভিন ক্রুইজসেন

2

রুবি, 67 বাইট

->(a,b,c){('0'+(a*10**c/b).to_s).gsub(/^0*(.+)(.{#{c}})$/,'\1.\2')}

যদি আমি উপরের পরীক্ষার কেসগুলি কার্যকর করতে এটি একটি ফাংশন করি

def print(a,b,c); ('0'+(a*10**c/b).to_s).gsub(/^0*(.+)(.{#{c}})$/, '\1.\2'); end
 => :print 
print(1,2,1)   # would print 0.5
 => "0.5" 
print(1,2,2)   # would print 0.50
 => "0.50" 
print(13,7,27) # would print 1.857142857142857142857142857
 => "1.857142857142857142857142857" 
print(2,3,1)   # would print 0.6
 => "0.6" 
print(4,5,7)   # would print 0.8000000
 => "0.8000000" 
print(4,5,1)   # would print 0.8
 => "0.8" 
print(9999,23,1) # would print 434.7
 => "434.7" 
print(12345613,2321,89) # would print if your Language has 32 bit unsigned 5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466
 => "5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466" 
"('0'+(a*10**c/b).to_s).gsub(/^0*(.+)(.{#{c}})$/, '\1.\2')".length
 => 52 

কোড গল্ফ স্বাগতম! বেশিরভাগ ভাষার ক্ষেত্রে, আপনি যখন কোনও ফাংশন সংজ্ঞায়িত করেন, আপনাকে এটিকে সমস্ত উপায়ে সংজ্ঞায়িত করতে হবে এবং আপনি এরূপ পূর্বনির্ধারিত ভেরিয়েবলগুলি ধরে নিয়েই নির্ভর করতে পারবেন না। রুবিতে, ল্যাম্বডা সংজ্ঞায়নের সবচেয়ে সংক্ষিপ্ততম উপায়টি ->a,b,c{...}যেখানে আপনি আপনার কোড দিয়ে উপবৃত্তগুলি প্রতিস্থাপন করেন। (ভেরিয়েবলের আসল নিয়োগটি conক্যমত্য দ্বারা বিন্যস্ত is)
মান কালি

ধন্যবাদ, আমি যে ভুল ধারণাটি পেয়েছিলাম যে অন্যরা সেই অংশটি ফেলেছিল ... তবে আপনি ঠিক বলেছেন। আমি কেবল এটি যুক্ত করেছি।
ম্যাথিউ জে

2

রেকেট 203 বাইট

(let*((s(~r(/ a b)#:precision c))(sl(string-split s "."))(s2(list-ref sl 1))(n(string-length s2)))
(if(< n c)(begin(for((i(- c n)))(set! s2(string-append s2 "0")))(string-append(list-ref sl 0)"."s2))s))

Ungolfed:

(define (f a b c)
  (let* ((s (~r(/ a b)#:precision c))
         (sl (string-split s "."))
         (s2 (list-ref sl 1))
         (n (string-length s2)))
    (if (< n c)
        (begin 
          (for ((i (- c n)))
            (set! s2 (string-append s2 "0")))
          (string-append (list-ref sl 0) "." s2))
        s )))

ব্যবহার:

(f 7 5 3)
(f 1 2 1) 
(f 1 2 2) 
(f 13 7 27)

আউটপুট:

"1.400"
"0.5"
"0.50"
"1.857142857142857142857142857"

অন্যান্য পদ্ধতি (এখানে বৈধ উত্তর নয়):

(real->decimal-string(/ a b)c)

আমি আশঙ্কা করছি এটি অবৈধ, কারণ এটির প্রথম আর্গুমেন্ট হিসাবে real->decimal-stringকোনও realমান প্রত্যাশা করে , তাই /ভাসমান পয়েন্ট বিভাগ, যা এই কার্যে অনুমোদিত নয়। এছাড়াও: কাটা কাটার পরিবর্তে real->decimal-stringরাউন্ড ( (f 1 6 7)-> 0.1666667)।
নিমি

পর্যবেক্ষণের জন্য ধন্যবাদ। আমি শীঘ্রই কোড সংশোধন করব।
rnso

1

q, 196 বাইট

w:{((x 0)div 10;1+x 1)}/[{0<x 0};(a;0)]1;{s:x 0;m:x 2;r:(10*x 1)+$[m<0;{x*10}/[-1*m;a];{x div 10}/[m;a]]mod 10;d:1#.Q.s r div b;($[m=-1;s,".",d;$[s~,:'["0"];d;s,d]];r mod b;m-1)}/[c+w;("";0;w-1)]0

চালানোর জন্য: প্রথমে একটি, বি, সি সেট করুন।


1

মরিচা, 114 বাইট

fn print(mut a:u32,b:u32,c:u32){let mut p=||{print!("{}",a/b);a=a%b*10};p();if c>0{print!(".")}for _ in 0..c{p()}}

পরীক্ষার কোড:

fn main() {
    print(1, 2, 1);    println!(""); // should print 0.5
    print(1, 2, 2);    println!(""); // should print 0.50
    print(13, 7, 27);  println!(""); // should print 1.857142857142857142857142857
    print(2, 3, 1);    println!(""); // should print 0.6
    print(4, 5, 7);    println!(""); // should print 0.8000000
    print(4, 5, 0);    println!(""); // should print 0
    print(9999, 23, 0);println!(""); // should print 434
    print(12345613,2321,89); println!("\n");  // 5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466
}

1

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

list(,$a,$b,$c)=$argv;for($o=intdiv($a,$b).'.';$c--;)$o.=intdiv($a=10*($a%$b),$b);echo$o;

intdiv () পিএইচপি 7-তে প্রবর্তিত হয়েছে সুতরাং এটির প্রয়োজন। পিএইচপি 7.1 আমাকে তালিকাটি () [] তে পরিবর্তন করার অনুমতি দেয় এবং 4 বাইট সংরক্ষণ করতে পারে।

যেমন ব্যবহার করুন:

php -r "list(,$a,$b,$c)=$argv;for($o=intdiv($a,$b).'.';$c--;)$o.=intdiv($a=10*($a%$b),$b);echo$o;" 1 2 1

প্রতিস্থাপন $o.=intdiv($a=10*($a%$b),$b);সঙ্গে $o.=($a=10*($a%$b))/$b^0;সংরক্ষণ 4 বাইট ইচ্ছা।
জার্গ হালসারম্যান

প্রাথমিকভাবে আমি সেই পরামর্শটি নিতে যাচ্ছিলাম (আমি উত্তরটি এবং সমস্ত কিছু সম্পাদনা করেছি) তবে দ্বিতীয় ভাবাতে এটি ভাসমান পয়েন্ট বিভাগ এবং তারপরে একটি দৈর্ঘ্যে <10% বৃদ্ধির জন্য ইন্টাস্ট করার জন্য একটি কাস্ট আমি পুরোপুরি চশমাটির মধ্যে পুরোপুরি আটকে থাকি প্রশ্নটি.
ব্যবহারকারী59178

1

সি #, 126 বাইট

(a,b,c)=>{var v=a*BigInteger.Parse("1"+new string('0',c))/b+"";return v.PadLeft(c+1,'0').Insert(Math.Max(1,v.Length-c),".");};

পরীক্ষার কেস সহ সম্পূর্ণ প্রোগ্রাম:

using System;
using System.Numerics;

namespace DivisionOfNotSoLittleNumbers
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<BigInteger,BigInteger,int,string>f= (a,b,c)=>{var v=a*BigInteger.Parse("1"+new string('0',c))/b+"";return v.PadLeft(c+1,'0').Insert(Math.Max(1,v.Length-c),".");};

            //test cases:
            Console.WriteLine(f(1,2,1));    //0.5
            Console.WriteLine(f(1,2,2));    //0.50
            Console.WriteLine(f(13,7,27));  //1.857142857142857142857142857
            Console.WriteLine(f(2,3,1));    //0.6
            Console.WriteLine(f(4,5,7));    //0.8000000
            Console.WriteLine(f(4,5,1));    //0.8
            Console.WriteLine(f(9999,23,1));    //434.7
            Console.WriteLine(f(12345613,2321,89)); //5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466
            Console.WriteLine(f(2,3,1));    //0.6
            Console.WriteLine(f(4,5,2));    //0.80
        }
    }
}

পূর্ণসংখ্যা বিভাগ বাস্তবায়িত হয়। যে কোনও আকারের নম্বর ব্যবহার করা যেতে পারে, BigIntegerডেটা টাইপের কারণে (আমদানি System.Numericsপ্রয়োজন)। ডিজিট-কাউন্টের প্যারামিটার c2 ^ 31-1 - এ সীমাবদ্ধ, তবে এটির জন্য পর্যাপ্ত অঙ্কের চেয়ে বেশি সরবরাহ করা উচিত।


1

গ্রোভি ( 78 77 42 বাইট)

{a,b,n->Eval.me(a+'.0g').divide(b, n, 1)}​

ব্যাখ্যা

Eval.me(a+'.0g');- পূর্ণসংখ্যার ইনপুট থেকে বিগডিসিমাল ইনপুটতে রূপান্তর করুন। গ্রোভিতে বিগডিসিমাল স্বরলিপিটি একটি সংযুক্ত জি বা জি সহ ডাবল স্বরলিপি। আমি কনস্ট্রাক্টরও ব্যবহার করতে পারতাম new BigDecimal(it)তবে এটি একটি বাইট সংরক্ষণ করেছিল।
.divide(b, n, 1)- খ দ্বারা বি ভাগ করে নিন যথাক্রমে, রাউন্ডিং মোড অর্ধ-আপ।

এটি এখানে চেষ্টা করুন: https://groovyconsole.appspot.com/script/5177545091710976


তবে বিগডিসিমাল ভাসমান পয়েন্ট অপারেশনকে সমর্থন করে যা আমার ভুল না হলে আমি বিশ্বাস করি যে এই মহড়ার জন্য নিষিদ্ধ হওয়ার ইঙ্গিত দেওয়া হয়েছিল।
ম্যাথিউ জে

1

ব্যাচ, 122 বাইট

@set/as=%1/%2,r=%1%%%2
@set s=%s%.
@for /l %%a in (1,1,%3)do @set/ad=r*10/%2,r=r*10%%%2&call set s=%%s%%%%d%%
@echo %s%

1

গণিত, 50 বাইট

StringInsert[ToString@Floor[10^# #2/#3],".",-#-1]&

তিন আর্গুমেন্ট (যা আদেশ করছে নামবিহীন ফাংশন c, a, bএকটি বাইট কোথাও সেভ করতে), যা একটি স্ট্রিং ফেরৎ। এটি a/bদ্বারা গুণিত হয় 10^c, বৃহত্তম সংখ্যার ফাংশন নেয়, তারপরে একটি স্ট্রিংয়ে রূপান্তর করে এবং উপযুক্ত স্থানে দশমিক বিন্দু সন্নিবেশ করায়। খুব খারাপ ফাংশনের নামগুলি ছোট নয়।


1

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

a,b,c=map(int,input().split());print("{:.{1}f}".format(a/b,c))

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

* দ্রষ্টব্য : repl.it পাইথন 3 এর পুরানো ভার্চ ব্যবহার করে , যার জন্য সমস্ত ক্ষেত্রের সূচকগুলি নির্দিষ্ট করা দরকার, এর পরিবর্তে এর অর্থ "{:.{1}f}"হবে "{0:.{1}f}"এটি এটিকে 63 বাইট করে repl.it

কিভাবে ব্যবহার করে

এর মধ্যে ফাঁক দিয়ে তিনটি মান সন্নিবেশ করান। অর্থাত্ একটি ইনপুট 1 2 1ফলাফল দেয়0.5

ব্যাখ্যা

input().split(): ব্যবহারকারী ইনপুট পান এবং (স্পেস) এর বিভাজক সহ একটি তালিকায় বিভক্ত হন

a,b,c = map(int,XX): কোনও প্রকার টাইপ সহ ব্যবহারকারী দ্বারা নির্দিষ্ট করা মানগুলিতে ভেরিয়েবলগুলি মানচিত্র করে

"{:.{1}f}".format(a/b,c): বিভাগের ফলাফল প্রদর্শন করতে একটি স্ট্রিং ফর্ম্যাট করে এবং প্রদর্শিত স্ট্রিংয়ের দশমিক স্থান নির্ধারণের {1}সাথে প্রতিস্থাপিত করেc

print(XX): সরবরাহ করা স্ট্রিং মুদ্রণ করে


1

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

lambda a,b,c:(lambda s:s[:-c]+"."+s[-c:])(str(a*10**c//b))

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

এটি দশমিকের নির্দিষ্ট সংখ্যার হিসাবে যথাযথ যতক্ষণ a * 10 ** cনা খুব বেশি বড় না হয়।

আমি পাইথন 2 টি ছোট করার str(...)জন্য চেষ্টা করেছি `...`তবে পাইথন 2 Lশেষে একটি সন্নিবেশ করায় যদি এটি খুব বড় হয় তবে এটির জন্য মূল্য পরীক্ষা করার চেয়ে আরও বেশি বাইট লাগবে কিনা তা পরীক্ষা করা।


1

স্ট্যাক্স , 13 বাইট

ä·oαì█↕▬AS¥é▼

এটি চালান এবং এটি ডিবাগ করুন

তর্কগুলি c a bক্রমে গৃহীত হয় ।


সমস্যাটি হবে "মুদ্রণ (9999,23,1)" পোস্টের ফলাফলের মুদ্রণ "434.7" যখন আপনার ফলাফলটি "4.7" একই রকম মনে হয়েছে: 9.092201etc এর পরিবর্তে 5319.092201etc
রোজলুপুর

আমি সম্মত নই ... আমি আজ সকালে আপনার লিঙ্কটি অনুসরণ করেছি এবং আপনার ফাংশন ক্রমের "মুদ্রণ (9999,23,1)" কেসটির
ফলাফলটি

@ রসলুপি: আমি পদ্ধতির পরিবর্তন করেছি। ফলাফলটি এখন সঠিকভাবে `434.7`` আমি প্রক্রিয়াটিতে একটি বাইট দ্বারা আকারও হ্রাস করেছি।
পুনরাবৃত্তি

0

সি, 67 বাইট

h(a,b,i){int j=!i;for(;printf(j++?"%u":"%u.",a/b),i--;a=10*(a%b));}

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

কিছু পূর্ববর্তী সংস্করণ আমার কাছে মনে হয় প্রোগ্রামটি বরাদ্দ না করে পঠন স্মৃতিতে একটি বাগ ছিল ... সিলিংক্যাট এবং সবার জন্য ধন্যবাদ ...


@ সেলিংক্যাট ঠিক আছে আপনাকে ধন্যবাদ
রোজলুপ

আমি সর্বশেষ এক 69 টি বাইট পছন্দ করি
রোজলুপ


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