সমস্ত অঙ্কের যোগফল গণনা করুন


38

এই চ্যালেঞ্জটি হ'ল এমন একটি প্রোগ্রাম বা স্ক্রিপ্ট লিখুন যা পূর্ণসংখ্যার মধ্যে 1 থেকে শুরু করে প্রদত্ত সংখ্যা সহ সমস্ত সংখ্যার যোগফল গণনা করে।

ইনপুট, একটি ইতিবাচক পূর্ণসংখ্যা। আউটপুট, সেই সংখ্যার এবং সমস্ত ছোট সংখ্যার যোগফল।

উদাহরণ:

Input: 5 
Integer Sequence: 1, 2, 3, 4, 5
Sum of Digits: 1 + 2 + 3 +4 + 5 = 15

Input: 12
Integer Sequence: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 
Sum of Digits: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 0 + 1 + 1 + 1 + 2 = 51

পরিষ্কার হয়ে উঠতে, এটি সংখ্যাগুলির যোগফল গণনা - পূর্ণসংখ্যা নয়। একক-অঙ্কের ইনপুটগুলির জন্য, এটি একই হবে। তবে 10 এর চেয়ে বড় ইনপুটগুলির বিভিন্ন প্রতিক্রিয়া থাকবে। এটি একটি ভুল প্রতিক্রিয়া হবে:

Input: 12
Output: 78

আর একটি উদাহরণ, পার্থক্যটি দেখানোর জন্য:

Input: 10

Integer Sequence: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Sum of Integers (INCORRECT RESPONSE): 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55

Digit Sequence: 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0
Sum of Digits (CORRECT RESPONSE): 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 0 = 46

একটি বৃহত্তর পরীক্ষার কেস (সঠিক প্রতিক্রিয়া):

Input: 1000000
Output: 27000001

বিধি ও নির্দেশিকা:

  • জমা দেওয়া কোডটি একটি সম্পূর্ণ প্রোগ্রাম বা স্ক্রিপ্ট হতে হবে - কেবল কোনও ফাংশন নয়। কোডটির অন্তর্ভুক্ত, আমদানি ইত্যাদি প্রয়োজন হলে সেগুলি অবশ্যই পোস্ট কোডের মধ্যে অন্তর্ভুক্ত করা উচিত।
  • নম্বরটি অবশ্যই ব্যবহারকারীকে ইনপুট করতে হবে - হার্ড-কোডড নয়। ইনপুট কমান্ড-লাইন আর্গুমেন্ট, ফাইল, স্টিডিন বা অন্য কোনও উপায়ে প্রাপ্ত হতে পারে যার দ্বারা আপনার ভাষা ব্যবহারকারী ইনপুট নিতে পারে।
  • কোডটি কমপক্ষে অবধি ইনপুটগুলি সঠিকভাবে পরিচালনা করতে সক্ষম হতে হবে (2^64)-1
  • কোডটি কেবলমাত্র যোগফল আউটপুট করা উচিত।
  • জমা দেওয়া প্রোগ্রাম এবং স্ক্রিপ্টগুলি ব্যবহারকারী-বান্ধব হওয়া উচিত এবং কম্পিউটার সংস্থান অপ্রয়োজনীয় নয় (উদাহরণস্বরূপ: তারা প্রতিটি চরিত্র ধারণ করার জন্য উন্মত্ত-বৃহত অ্যারেগুলি ঘোষণা করবেন না)। এর জন্য কোনও কঠোর বোনাস বা জরিমানা নেই, তবে দয়া করে ভাল প্রোগ্রামার হোন।

স্কোরিং:

প্রাথমিক স্কোরিং প্রক্রিয়াটি কোড দৈর্ঘ্যের দ্বারা। নিম্ন স্কোরগুলি আরও ভাল। নিম্নলিখিত বোনাস এবং জরিমানাও প্রযোজ্য:

  • -25 বোনাস যদি আপনার কোড সমস্ত ধনাত্মক সংখ্যা পরিচালনা করতে পারে তবে উদাহরণস্বরূপ:1234567891234567891234564789087414984894900000000
  • -50 বোনাস যদি আপনার কোড উদাহরণস্বরূপ সাধারণ অভিব্যক্তি পরিচালনা করতে পারে 55*96-12। এই বোনাসের যোগ্যতা অর্জনের জন্য + - / *কোডটির অপারেটরগুলি (সংযোজন, বিয়োগ, বিভাগ, গুণ) হ্যান্ডেল করা উচিত এবং ক্রিয়াকলাপের আদেশ প্রয়োগ করা উচিত। বিভাগ নিয়মিত পূর্ণসংখ্যা বিভাগ।
    • প্রদত্ত উদাহরণ ( 55*96-12) মূল্যায়ন করে 5268। আপনার কোডটি সেই ইনপুটগুলির মধ্যে যে কোনওটির জন্য একই রকম হওয়া উচিত - সঠিক উত্তরটি 81393
  • -10 বোনাস যদি আপনার কোড -50 বোনাসের জন্য যোগ্যতা অর্জন করে এবং^ (এক্সপোনেন্ট) অপারেটরটি পরিচালনা করতে পারে ।
  • -100 বোনাস যদি আপনার কোড -50 বোনাসের জন্য যোগ্যতা অর্জন করে এবংeval এক্সপ্রেশনগুলি হ্যান্ডেল করার জন্য ব্যবহার বা অনুরূপ না করে।
  • আপনার কোডটি কোনও ওয়েব সংস্থার উপর নির্ভর করে যদি +300 জরিমানা

2
আর কী ফেরা উচিত 55*96-12?
প্রোগ্রামফক্স

1
55 * 96-12 = 5268, 5268
এসটি 3

3
বোনাসগুলি কিছুটা বড় দিক হতে পারে, মনে হচ্ছে এটি সবচেয়ে বড় নেতিবাচক স্কোরের প্রতিযোগিতা হয়ে উঠছে :)
জোছিম ইসাকসন

7
@ এসটি 3 যদি বোনাস ছাড়া জিততে কার্যত অসম্ভব হয় তবে কেবল তাদের প্রয়োজনীয়তা তৈরি করা, বা কম মূল্যবান হওয়া ভাল।
ক্রানচার

3
-1 কারণ এই চ্যালেঞ্জটি "বোনাস" এর পুরানো (এবং ভয়ঙ্কর) স্কোরিং প্রণোদনা ব্যবহার করে।
mbomb007

উত্তর:


9

পার্ল 6: 108 - (25 + 50 + 100) + 0 = -67 পয়েন্ট

গল্ফযুক্ত সমাধান ( এক্সফিক্সের দুর্দান্ত সমাধানের ভিত্তিতে চূড়ান্ত লাইন ):

$!=get;for '*',&[*],'/',&[/],'+',&[+],'-',&[-] ->$s,&f{$!~~s:g[(\d+)$s(\d+){}]=f |@()}
say [+] (1..$!)».comb

অ-গল্ফযুক্ত সমাধান:

my $expression = get;
for '*', &[*],
    '/', &[/],
    '+', &[+],
    '-', &[-]
-> $sym, &infix {
    $expression ~~ s:g[(\d+) $sym (\d+) {}] = infix($0, $1)
}
say [+] (1..$expression)».comb

মূল্যায়ন পদক্ষেপ প্রতিটি প্রতীক উপর iterating করে কাজ করে *, /, +, -, খোঁজার দুটি পূর্ণসংখ্যার মধ্যে যে মিথ্যা, এবং বদলে যে ফাংশন ব্যবহার করে এই চিহ্নের প্রতিনিধিত্ব করে।

আরও বিশদে: এটি প্রতিটি প্রতীক (উদাহরণস্বরূপ +) এবং ইনফিক্স ফাংশন নেয় যা এটি প্রতিনিধিত্ব করে বলে মনে করা হয় (যেমন &[+]শর্টহ্যান্ড &infix:<+>এবং পার্ল 6 যখন আপনি মৃত্যুদণ্ড কার্যকর করেন তখন কল 1 + 2করে) এবং একটি বিশ্বব্যাপী প্রতিস্থাপন করে ( s:g[…] = …যা পার্ল 5 এর মতো s/…/…/ge), যা চিহ্ন ( (\d+) $sym (\d+)) দ্বারা পৃথক দুটি পূর্ণসংখ্যার সাথে মেলে এবং এটি সংখ্যার ( infix($0, $1)) সংখ্যার সাথে সংযুক্ত ইনফিক্স ফাংশনটির আউটপুট সঙ্গে প্রতিস্থাপিত করে ।

অবশেষে, এই মূল্যায়ন অভিব্যক্তি মধ্যে ফিড নেই say [+] (1..$expression)».comb, যা xfix খুব ভাল তার সমাধান ব্যাখ্যা

পার্টিতে এত দেরি হওয়ার জন্য দুঃখিত ☺

সম্পাদনা: খালিদের জন্য সরানো সমর্থন; এটি যাইহোক হ'ল 10 অক্ষর এবং সঠিকভাবে সাহসিকতা করেনি।


এটা অসাধারণ. আপনি কীভাবে খুব সাধারণ পার্সার তৈরি করেছেন তা আমি পছন্দ করি - আমি চেষ্টা করেছিলাম, তবে আমি এর চেয়ে ছোট কিছু করার ব্যবস্থা করে নি। পরিবর্তে my $gআপনি পূর্বনির্ধারিত কিছু ব্যবহার করতে চাইতে পারেন (আমি মনে করি এটি $!কাজ করতে পারে তবে আমি পরীক্ষা করেছি না)।
কনরাড বোরোস্কি

@ এক্সফিক্স, আমি নিশ্চিত নই যে এটি কীভাবে গল্ফকে সাহায্য করবে। এটি সত্যই গল্ফ করার একটি উপায় আছে তবে এটির জন্য এখনও সম্পূর্ণরূপে কার্যকরী নয় "ইনফিক্স: [$ ভার্]" বাক্য গঠন: my$g=get;for <* / + -> {$g~~s:g[(\d+)$^s(\d+){}]=infix:[$^s] |@()};say [+] (1..$g)».combএটি স্কোরটি 88
অক্ষরে

ওহ, $! 'আমার' থেকে মুক্তি পেতে সহায়তা করবে! ধন্যবাদ @ এক্সফিক্স
মৌখ

14

গণিত 30- (10 + 50) = -30

ইবেলটুকভকে 4 টি চর সংক্ষিপ্ত করে ধন্যবাদ।

Range@n1 এর মাধ্যমে সংখ্যাগুলি প্রদান করে n

Integerdigits@n এই সংখ্যাগুলির প্রতিটিটিকে তার অঙ্কগুলিতে বিভক্ত করে।

Total[n,2]অঙ্কগুলি যোগ করে। 2 হ'ল বিভিন্ন স্তর জুড়ে যোগফলের অনুমতি দেওয়া, অর্থাত তালিকাগুলির তালিকাগুলি।

IntegerDigits@Range@#~Total~2&

পরীক্ষামূলক

IntegerDigits@Range@#~Total~2&[12]

51

IntegerDigits@Range@#~Total~2 &[1000000]

27000001


প্রকাশ

IntegerDigits@Range@#~Total~2 &[55*96 - 12]

55*96 - 12

81393
5268

IntegerDigits@Range@#~Total~2 &[5268]

81393


IntegerDigits@Range@#~Total~2 &[55*96^2 - 12]
55*96^2 - 12

12396621
506868

IntegerDigits@Range@#~Total~2 &[506868]

12396621


সমস্ত ব্রাউন পয়েন্ট পেতে আপনার বৈধ যুক্তি সম্পর্কিত তথ্য যুক্ত করা উচিত: ডি
ইয়ভস ক্লেট

1
আমি জানি না যে আমি এটি বিবেচনা করব না
ওয়াল

3
পুনরায়: ম্যাথমেটিকায় ইভাল। এটি একটি প্রতীকী ভাষা যেখানে সম্মুখ-প্রান্তটি সর্বদা ম্যাথটিকে স্বয়ংক্রিয়ভাবে সমাধান করার চেষ্টা করে। এটি করা থেকে বিরত রাখতে আপনাকে অতিরিক্ত কোড (হোল্ড []) যুক্ত করতে হবে।
মাইকেল স্টারন

1
Tr@Flattenকমে যাবে Total[...,2]: IntegerDigits@Range@#~Total~2&
ybeltukov

1
আপনি কি ইচ্ছামত বৃহত্তর int হ্যান্ডেল এবং অন্য 25-কে প্রাপ্য না?
ওরফে.নিস

12

সি: 150 138 - (100 + 50) = -12

a,b,c;main(d){for(scanf("%d ",&a);~scanf("%c%d ",&d,&b);a=d^43?d%5?d%2?a/b:a*b:a-b:a+b);for(;a;)for(b=a--;b;b/=10)c+=b%10;printf("%d",c);}

এক্সপ্রেশন মূল্যায়ন করতে খুব লজ্জাজনকভাবে @ ফার্সের উত্তর চুরি করে: https://codegolf.stackexchange.com/a/11423/13877

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

./a.exe <<< "5 + 7"
51

দ্রষ্টব্য: এক্সপ্রেশন বাস্তবায়ন কোনও অপারেটরকে প্রাধান্য দেয় না এবং মানগুলি গ্রহণ করার সাথে সাথে সেগুলি গ্রহণ করে; প্রাক্তন, 1+2*3 = 9বরং সাধারণত 7


1
এটি অপারেটরের অগ্রাধিকারের সাথে মোকাবেলা করে না, তবে প্রশ্নটি স্ট্যান্ডার্ড অপারেটর অগ্রাধিকার প্রয়োগ করা উচিত কিনা তা নির্দিষ্ট করে না ... পিং @ এসটি 3, সম্ভবত এটি স্পষ্ট করা উচিত। যাইহোক, সম্ভবত এটি উত্তরে উল্লেখ করা উচিত।
ফায়ারফ্লাই

@ ফায়ারফ্লাই আমি এই সত্যটি প্রতিফলিত করার জন্য উত্তরটি পরিবর্তন করেছি।
জোশ

@ জোশ - দয়া করে 2 ^ 64 - 5
সের্গেইস

10

সেড, 411 283 - 25 = 258

আমি এখনই এটি আরও গল্ফ নিয়ে বিরক্ত করতে পারি না। :-) এমনকি দূরবর্তী দূরত্বে বড় পূর্ণসংখ্যার সাথে ব্যবহারের জন্য প্রস্তাবিত নয়, তবে প্রযুক্তিগতভাবে এটি নির্বিচারে বড় পূর্ণসংখ্যার সাথে ডিল করতে পারে (আপনি সম্ভবত র‌্যামের বাইরে চলে যাবেন, যদিও আমি (আরও বা কম-বেশি করতে হবে) এর মধ্যে নম্বরটি এনকোড করেছি ইউনারী)।

s/$/x0123456789/
:l
/9$/H
:b
s/(.)(y*x\1)/y\2/
/(.)y*x\1/b b
s/(.)([xy].*)(.)\1/\3\2\3\1/
:c
s/y(.*(.))/\2\1/
/y/b c
/0$/b f
/^0*x.*9$/!b l
x
s/x[^\n]*\n//g
:d
s/(.)(.*x.*(.)\1)/z\3\2/
/[^z0]x/b d
s/0|x.*|\n//g
H;x
s/./0/g
s/$/x9876543210/
x
:e
x
b l
:f
x
s/.//
/./b e
x
s/^0+|x.*//g

নমুনা ব্যবহার

(সহজ পাঠের জন্য ইনপুট লাইনগুলি ইন্টেন্ট করা হয়েছে))

  5
15
  12
51
  33
183

8

অজগর, 55- (50 + 25 + 10) = -30

দক্ষ-দক্ষ এখনও খাটো এবং অভিব্যক্তিগুলি পরিচালনা করতে সক্ষম able

সম্পাদনা: ট্রলফের জন্য ধন্যবাদ ওল্ফরাম এবং লেগোস্টোরমাট্রোপ : ডি

s,t=0,input()
while t:s+=sum(map(int,`t`));t-=1
print s

পাইথন, 149- (25 + 50 + 10) = 64

আমার প্রথম সংস্করণ

def d(n):
 if n/10==0:return n*(n+1)/2
 c,t=0,n
 while t/10:c,t=c+1,t/10
 p=10**c;m=n%p
 return d(m)+t*(m+1)+p*t*(t-1)/2+p*c*t*45/10
print d(input())

ইনপুট:

1234567891234567891234564789087414984894900000000

আউটপুট:

265889343871444899381999757086453238874482500000214

আমি যখন আপনার xrangeসমাধানটি চালানোর চেষ্টা করব তখন আমি একটি ওভারফ্লো ত্রুটি পেয়েছি1234567891234567891234564789087414984894900000000
জোশ

1
@ জোশ মুক্তি পেয়েছে xrange: ডি
ওয়াসি

2
কিছু ইঙ্গিত: আপনি eval(raw_input())দ্বারা প্রতিস্থাপন করতে পারেন input()whileলুপ হতে পারে while t:s+=sum(map(int,টি ));t-=1
মনিকা

2
আপনি এর input()পরিবর্তে eval(raw_input())যেমন ব্যবহার করে এটি সংক্ষিপ্ত করতে পারেনinput ইতিমধ্যে evalপ্রকাশ হিসাবে! এর অর্থ আপনি পাওয়ার চিহ্নের জন্য -10 বাইনাস এবং ব্যবহার না করার জন্য -100 বোনাস পেতে পারেন eval!!!

@ লেগোস্টোরমাট্রোপ্রের নিয়মগুলি বলছে evalএবং অনুরূপ , তাই আমি মনে করি -100 গণনা করা হবে না
SztupY

8

পাইথন - 108 টি চারটি বিয়োগ 85 বোনাস, 23 স্ট্রোক, খুব খুব বড় ইনপুটগুলি পরিচালনা করে

এই সমাধানগুলির বেশিরভাগগুলি ইনপুটটির চেয়ে কম সমস্ত ইনপটের উপরে লুপিং করে এবং তাদের সমস্ত অঙ্কের যোগ যোগ করে বলে মনে হচ্ছে। এটি কাজ করে তবে আমি অনুভব করি না এবং তারা জিজ্ঞাসা করবে যে তারা 25 পয়েন্ট বোনাসের জন্য সত্যই যোগ্য কিনা, কারণ আমি মনে করি না যে তারা 1234567891234567891234564789087414984894900000000আমাদের জীবনকালের মধ্যে ইনপুটটি পরিচালনা করতে সক্ষম হবে । প্রকৃতপক্ষে, nসংখ্যার ইনপুটটিতে, এই সমাধানগুলি O(10^n)সময় নেয়। পরিবর্তে আমি এই সমস্যাটিতে কিছু গণিত ফেলে দেওয়ার জন্য বেছে নিয়েছি chose

#Returns the sum of all digits in all x-digit numbers
def f(x):
    return x*(10**(x-1))*45

#Returns the sum of all numbers up to x
def g(x):
    return x*(x+1)/2

#Solves the problem quickly
def magic(x):
    digits = [int(y) for y in list(str(x))]
    digits.reverse()
    total = 0

    for (sig, val) in enumerate(digits):
        total += (10**sig)*g(val-1) + val*f(sig) + val + (val*10**sig)*sum(digits[sig+1:])
    return int(total)

সমস্ত xঅঙ্কের সংখ্যার সেটটি সেটটি সমকামী {0,1,2,3,4,5,6,7,8,9}^x। একটি নির্দিষ্ট জন্য (n,sig)আছে xজন্য আলাদা মান sig, 10^x-1সঙ্গে পয়েন্ট sigথেকে তম সূচক সেট n, এবং সমস্ত সংখ্যার যোগফল 0-945. এই সব দ্বারা পরিচালিত হয় f

g এমন কিছু যা সম্ভবত আমরা সকলেই পরিচিত

magicইনপুট সংখ্যায় সমস্ত অঙ্ক নেয় এবং এগুলিকে কমপক্ষে থেকে উল্লেখযোগ্য পর্যন্ত পুনরাবৃত্তি করে। এটা একটা উদাহরণ ইনপুট দিয়ে এই ট্র্যাক করার সবচেয়ে সহজ ধরুন 1,234,567

পরিসর মোকাবেলা করার জন্য 1,234,567-1,234,560, আমরা থেকে সমস্ত সংখ্যার আপ যোগ করা আবশ্যক 1করতে 7, এবং যোগ 7বার অন্যান্য ডিজিটের যোগফল, তার চেয়ে অনেক বেশী সমস্ত নম্বর সঙ্গে মোকাবিলা করার জন্য 1,234,560। আমাদের এখন বাকী অংশ নিয়ে কাজ করা দরকার।

পরিসীমা মোকাবেলা করতে 1,234,560-1,234,500 , আমরা 6( val) যুক্ত করব এবং উপরের সীমাটি ছেড়ে দেব 1,234,559। ড্রপের বাকী অংশটি তৈরি করার সময় আমরা প্রতিটি একক-সংখ্যা 6 বার ( val*f(sig)) দেখতে পাব । আমরা থেকে সমস্ত সংখ্যার দেখতে পাবেন 0করার 5ঠিক 10সময়ের প্রতিটি ( (10**sig)*g(val-1))। আমরা এই সংখ্যার অন্য 60 টি সংখ্যা ঠিক 60 বার ( (val*10**sig)*sum(digits[sig+1:])) দেখব । আমরা এখন সমস্ত সংখ্যার সাথে কঠোরতর চেয়ে বেশি আচরণ করেছি 1,234,500। একই যুক্তি সমস্ত তাত্পর্য জুড়ে inductively প্রয়োগ করা হবে।

ওল্ফ্রামএহকে ধন্যবাদ দিয়ে এটিকে গল্ফ করা এই সমাধানটি কমিয়ে দেয়

d=map(int,str(input()))
print sum(v*(10**s*((v-1)/2+sum(d[:~s]))-~s*9*10**s/2)for s,v in enumerate(d[::-1]))

সব পূর্ণসংখ্যার অঙ্ক অঙ্কের যোগফল পর্যন্ত 1234567891234567891234564789087414984894900000000হয়265889343871444927857379407666265810009829069029376

গল্ফযুক্ত সংস্করণে আমি সবচেয়ে বড় সংখ্যাটি পরিচালনা করতে পেরেছি 10 ^ 300, যার পর্যায়ে ভাসমানগুলি উপচে পড়া শুরু হয় এবং সংখ্যাগত অস্থিরতা সমস্যার কারণ হতে শুরু করে। তাত্ক্ষণিক স্কোয়ার-ও-গুণযুক্ত ক্ষয়ক্ষতি কার্যের সাথে, এই সমস্যাটি বিলুপ্ত হবে anish

এবং ল্যাটেক্স সমর্থন হবে সত্যিই দরকারী হবে ...


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

চমৎকার উত্তর! এটা তোলে আমি সংখ্যাত, যে হবে মধ্যে অনুরূপ যদি ইনপুট 1000000 হয় :)
ST3

1
গণিত ব্যবহারের জন্য +1। যাইহোক, আমি পেয়েছি 2.65889343871e+50, যা আসল সমাধানটির একটি ভাসমান বিন্দু অনুমান। আপাতদৃষ্টিতে আপনি যে কোডটি দিয়েছিলেন সেটির int(t)পরিবর্তে মুদ্রণ করেছেন t। এটা ভুল; আসল সমাধানটি হ'ল 265889343871444899381999757086453238874482500000214। শুধু ফ্লোট ব্যবহার করা এড়ানো, অর্থাত্ **(x-1)সংক্ষিপ্ত দ্বারা প্রতিস্থাপন **x/10
মনিকা 21

1
এটি আরও কিছুটা গল্ফ করুন। এটি পরিষ্কার যে একমাত্র বিশ্বব্যাপী প্রয়োজনীয় d(কারণ এটি দুটিবার ব্যবহৃত হয়েছে)। অন্যদের (এবং কিছু কৌশল ব্যবহার করে) অপসারণ করা এক d=map(int,str(input()))\nprint sum(v*(10**s*((v-1)/2+sum(d[:~s]))-~s*9*10**s/2)for s,v in enumerate(d[::-1]))(108 টি অক্ষর) উপস্থিত হয়। যে কোনও আকারের ইনপুটগুলিতে (যেমন int("1"*1000)) জরিমানা চালায় ।
মনিকা

1
@ এমব্রিট 10**-1হ'ল 0.1এবং সেখান থেকে সবকিছুই ভাসমান হয়ে উঠবে । 1/10হয় 0(পূর্ণসংখ্যা বিভাগ), এবং সবকিছু থাকতে পারেন intসে।
মনিকা

8

টিআই-বেসিক, 137 - (50 + 10 + 100) = -23

Input A:Disp cumSum(randIntNoRep(1,A))→L₁:"?:For(A,1,dim(L₁:Ans+sub("ABCDEFGHIJKLMNOPQRSTUVWXYZ",L₁(A),1:End:Disp sub(Ans,2,length(Ans)-1

ইনপুট সংখ্যা পর্যন্ত পরিচালনা করে 1E100এবং স্বয়ংক্রিয়ভাবে মূল্যায়ন করে। এক্সপ্রেশন পরিচালনা করতে পারে।

যদিও এটি একটি অত্যন্ত বড় অ্যারে, আমি কম্পিউটার সংস্থান নষ্ট করছি না (এটি একটি ক্যালকুলেটর থেকে চালিত হয় )।


1
আমি মনে করি এই প্রশ্নের সেরা উত্তর। একসাথে সংখ্যা যুক্ত করার জন্য একটি কোড গল্ফ উত্তর লিখতে একটি ক্যালকুলেটর ভাষা ব্যবহার করে। খুবই ভাল!
মালাচি

1
@ মালাচি যেমন আমি সবসময় বলেছি, যখন কোড গল্ফ = গণিত হয়, তখন সময় এসেছে ক্যালকুলেটরটি বের করার।
টিমটেক

2
আমার সংস্করণ যা 9E99 পর্যন্ত সংখ্যাগুলিকে মঞ্জুরি দিয়েছিল তা আপাতভাবে যথেষ্ট ভাল ছিল না, তাই আমি মনে করি না আপনি এই বোনাসটি গণনা করতে পারেন। এছাড়াও, আমি নিশ্চিত যে ক্যারাহের ম্যাথেমেটিকা ​​উত্তর অনুসারে আপনাকে ইনপুটটিকে "উইল অফ" হিসাবে গণনা করতে হবে pretty
ফায়ারফ্লাই

1
ফায়ারফ্লাইয়ের সাথে সম্মত হন, ব্যবহার না করার বোনাস evalনেওয়া উচিত নয়।
এসটি 3

3
ক্যালকুলেটর কীভাবে কম্পিউটার নয়?
ডেভিড কনরাড


6

সি, 77 74

n,v,i;main(){scanf("%d",&n);for(;i||(i=n--);i/=10)v+=i%10;printf("%d",v);}

সি, 150 124 - 25 = 99

এখানে একটি বিকল্প সংস্করণ দেওয়া হয়েছে যা "কোনও" ধনাত্মক পূর্ণসংখ্যার জন্য 25 বোনাসের জন্য প্রযুক্তিগতভাবে যোগ্য হওয়া উচিত তবে অ্যালগরিদম তার ইনপুটটিতে রৈখিক সময় হওয়ায় এটি ব্যবহারিকভাবে ধীর হয়। নির্বিশেষে, এটি মজা ছিল। ম্যানুয়ালি ASCII অক্ষর হিসাবে পড়া একটি সংখ্যা বিয়োগ করে। এই সংস্করণটি 150 অক্ষর। (এখন ভয়ঙ্কর, যুক্তি-প্রহার, লুপফুল কোড সহ!)

n,v;main(int n,char**a){char*p;do{for(p=a[1];*p>47;p++)v+=*p-48;for(;*--p==48;)*p=57;
p[0]--;}while(p>=a[1]);printf("%d",v);}

সি, 229 224 - (50 + 100) = 74

এক্সপ্রেশন-হ্যান্ডলিং প্রকরণ। কার্যকরী অপারেটর প্রাধান্য টিপিক্যাল নিয়ম অনুযায়ী: / * - +। 97 টোকেন = 48 পদে সীমাবদ্ধ।

#define F(X,Y)for(q=n+1;q+1!=p;)*q-X?q+=2:(q[-1]Y##=q[1],memmove(q,q+2,(p-q)*4))
n[99],*p,*q,v,i;main(){for(p=n;~scanf("%d%c",p,p+1);)p+=2;F('/',/);F('*',*);
F('-',-);F('+',+);for(;i||(i=n[0]--);i/=10)v+=i%10;printf("%d",v);}

সমস্ত ধনাত্মক পূর্ণসংখ্যার অর্থ, এটি আরও দীর্ঘতর 99 টি সংখ্যার হ্যান্ডেল হওয়া উচিত।
এসটি 3

বিল্টিন সংখ্যার চেয়ে বড় সংখ্যায় কাজ করতে @ অগ্নিপরীক্ষায় শীতল অ্যালগরিদম!
জোশ

5

গল্ফস্ক্রিপ্ট 18 - 50 = -32

~),{`+}*' '*~]{+}*

ব্যাখ্যা: ধরুন ইনপুটটি "12":

~), # turn input into integer, increment, and then turn into an array of all numbers less than or equal to input.  

স্ট্যাক হয় [0,1,2,3,...,12]

{`+}* # fold string concatenation across the array

স্ট্যাক হয় "01234...9101112"

' '* # join a space between all characters

স্ট্যাক হয় "0 1 2 ... 1 0 1 1 1 2"

~] # evaluate the stack into an array.  No `[` is necessary since the stack is otherwise empty.

স্ট্যাক হয় [0,1,2,...,9,1,0,1,1,1,2]

{+}* # fold addition across the new array

স্ট্যাকটি 51 হিসাবে পছন্দসই।

এখানে ইনপুটটি কোনও বৈধ গল্ফস্ক্রিপ্ট এক্সপ্রেশন হতে পারে, এতে এক্সপোনেন্টগুলি অন্তর্ভুক্ত থাকতে পারে। উদাহরণ স্বরূপ:

echo "5 5 + 2 * 8 -" | ruby golfscript.rb h.gs
-> 51

যেহেতু 2(5 + 5) - 8 = 12। আমি মনে করি এটি বোনাসের জন্য যোগ্য হওয়া উচিত, তবে সম্ভবত এটি কেবলমাত্র ফর্মের মধ্যেই প্রত্যাশিত ছিল, গল্ফস্ক্রিপ্টের বিপরীত পোলিশ স্বরলিপি নয়।


এটি ^পাশাপাশি সমর্থন করে ?
SztupY

এটি গল্ফস্ক্রিপ্ট সিনট্যাক্সে এক্সপেনশনেশন সমর্থন করে, যা?
বেন রেইচ

আপনি বোনাস 10 পাবেন না কারণ প্রোগ্রাম সমর্থন করতে হবে ^, না ?বা powএবং ইত্যাদি
ST3

@ এসটি 3 আপনার ইচ্ছামতো!
বেন রিচ

4

রুবি, 37 - 50 = -13

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

p eval [*1..eval(gets)].join.chars*?+

পুরানো সংস্করণ (49 - 50 স্কোর)

p"#{[*1..eval(gets)]}".chars.map(&:to_i).inject:+

10 টি অক্ষরের বোনাস ধরে নিলে কসেট হওয়ার জন্য প্রকৃতপক্ষে অক্ষরটির প্রয়োজন হয়, আমি যুক্ত করতে সবচেয়ে সংক্ষিপ্ততম উপায়টি হ'ল:

.gsub ?^,'**'

বোনাস যেটির চেয়ে বেশি অক্ষর দেয়।


আপনি কয়েকটি অক্ষর মুছে ফেলতে পারেন:p"#{[*1..eval(gets)]}".chars.map(&:to_i).inject :+
SztupY

@ স্পটআপ ওয়াইড কল, ধন্যবাদ! আমি &গল্ফ প্রায় যথেষ্ট ব্যবহার করি না । আসলে, আপনি মধ্যে স্থান প্রয়োজন হবে না injectএবং :+পারেন।
পল প্রেসিডেজ

4

পার্ল 6 (28 - 75 + 0 = -47 বাইট)

say [+] (1..get.eval)».comb

এটি সমস্ত ধনাত্মক সংখ্যাগুলি পরিচালনা করতে পারে (তবে বড়গুলি একটি দীর্ঘ সময় নিতে পারে, কারণ বর্তমানে পার্ল 6 বাস্তবায়ন ধীর, তবে পার্ল 6 বড় আকারের পূর্ণসংখ্যাকে সমর্থন করে)। এটি evalএকটি সাধারণ ক্যালকুলেটর বাস্তবায়নের জন্য ব্যবহার করে (পঞ্চাশ অক্ষরের জন্য পাঁচটি অক্ষর জরিমানা মূল্যবান)। এটি কেবল ধীরে ধীরে বর্তমান বাস্তবায়নগুলি ধীর হওয়ার কারণে, তবে তাত্ত্বিকভাবে এটি যথেষ্ট দ্রুত হওয়া উচিত (যখন পার্ল 6 বাস্তবায়নগুলি উন্নত হয়, তা হয়)। এছাড়াও, আশ্চর্যজনকভাবে, আমি ম্যাথমেটিকা ​​(আপাতত) দিয়ে জিতেছি।

» এই কোডটিতে আসলে প্রয়োজন নেই, তবে আমি এটি এখানে পারফরম্যান্সের কারণে রেখেছি (অন্যথায়, প্রোগ্রামটি পুরো স্ট্রিং বরাদ্দ করে। কারণ এখানে কেন পার্ল 6 এর অসীম স্ট্রিং নেই, তবে এতে অসীম তালিকা রয়েছে।

যাইহোক, আপনি এই কোডটি কীভাবে কাজ করে তা জিজ্ঞাসা করতে পারেন। ঠিক আছে, আমি এটি একাংশ দ্বারা পাস করতে যাচ্ছি।

  • get.eval

    এটি একটি লাইন ( getফাংশন) পায় এবং এটি ( evalপদ্ধতি) মূল্যায়ন করে ।

  • 1..get.eval

    এর পরে, পার্ল 6 1মূল্যায়ন মানের থেকে শুরু করে একটি ব্যাপ্তি অবজেক্ট প্রস্তুত করে। এটি একটি ব্যাপ্তি, তাই বিশাল কিছুই বরাদ্দ করা হয় না।

  • ».comb

    .combপদ্ধতি অক্ষরগুলিতে স্ট্রিংকে বিভক্ত করে ( যদি কোনও যুক্তি দিয়ে না ডাকা হয় )। উদাহরণস্বরূপ, 'cat'.combফেরৎ 'c', 'a', 't'»তালিকার উপাদানগুলির মানচিত্র তৈরি করে, তাই .combএটি প্রতিটি আইটেমের উপর চালানো হয় - কেবল তালিকায় নয় (উদাহরণস্বরূপ, (4, 9)».sqrtদেয় 2, 3)। এটি প্রয়োজনের চেয়ে বেশি বরাদ্দও দেয় না, কারণ পার্ল 6 এর অসীম তালিকা রয়েছে (উদাহরণস্বরূপ হাস্কেলের মতো)।

    »চরিত্রটির আসলে প্রয়োজন নেই, যেমন .combসরাসরি তালিকায় ব্যবহার করা যেতে পারে, তবে এতে অন্তর্নিহিত স্ট্রিং জবরদস্তি (এবং পার্ল 6 এর অসীম স্ট্রিং নেই, সুতরাং এটির স্মৃতিশক্তি নষ্ট হবে)। উদাহরণস্বরূপ, 1, 2, 3স্ট্রিং রিটার্নে রূপান্তরের পরে তালিকাবদ্ধ করুন 1 2 3। পার্ল 6 এর জন্য, একটি স্পেস পুরোপুরি সূক্ষ্ম সংখ্যা যার অর্থ 0, সুতরাং কোডটি এমন রূপান্তর সহ এমনকি কাজ করবে। তবে এটি কম্পিউটিং সংস্থানগুলিকে অপব্যবহার করবে।

  • [+]

    এটি হ্রাস অপারেটর। মূলত, এর মধ্যে [], আপনি এই ক্ষেত্রে কোনও অপারেটর ব্যবহার করতে পারেন +। অপারেটর হ্রাস করার পরে তালিকাটি হ্রাস করা [+] 1, 2, 3হয় 1 + 2 + 3, যা হয় 6। পার্ল 6 সংখ্যা এবং স্ট্রিংয়ের জন্য পৃথক অপারেটর ব্যবহার করে, সুতরাং এটি সংমিশ্রণ হিসাবে বিবেচিত হবে না।

  • say

    পরিশেষে, sayফলাফল আউটপুট। সর্বোপরি, আপনি চূড়ান্ত ফলাফল দেখতে চান, তাই না?


হুঁ ... [+] 1,2,3,4,5,6,7,8,9,10ঠিক আছে 1+2+3+4+5+6+7+8+9+10, আমি ঠিক আছি?
ST3

@ এসটি 3: হ্যাঁ হ্রাস অপারেটরটি পার্ল many তে অনেক আকর্ষণীয় উপায়ে ব্যবহার করা যেতে পারে উদাহরণস্বরূপ,> শিকল দেওয়া যেতে পারে, তাই 3 > 2 > 1সত্য। অপারেটরগুলি হ্রাস করতে একই সম্পত্তি প্রযোজ্য, তাই [>] 3, 2, 1এখনও এটি সত্য, এর অর্থ 3 > 2 > 1- [>]সংখ্যাগুলি অবতরণে রয়েছে কিনা তা নির্ধারণ করতে ব্যবহার করা যেতে পারে।
কনরাড বোরোস্কি

আপনি এর get.Intপরিবর্তে ব্যবহার করতে পারবেন নাeval ? এর জন্য কি গণিতের এক্সপ্রেশন দরকার?
ভেন

@ user1737909: "-আপনার কোড যদি সহজ অভিব্যক্তি পরিচালনা করতে পারে তবে বোনাস"। এছাড়াও, পার্ল 6 এর নকশা অনুসারে কাস্টিংয়ের প্রয়োজন নেই ( sortতুলনামূলক পদ্ধতির যুক্তি ছাড়াই কয়েকটি বিরল প্রান্তের কেস বাদে )।
কনরাড বোরোস্কি


3

জে, 22

([:+/[:"."0[:":>:@:i.)

ব্যাখ্যা

মূল্যায়ন ডান থেকে বামে এগিয়ে যায়।

i. n -> 0 1 2...n-1

>: n -> n+1

": numbers -> 'numbers'

"."0 -> (on each scalar item) apply ". -> '123' -> 1 2 3

+/ -> sum

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

প্রকৃতপক্ষে, শীর্ষের উত্তরের দিকে নজর রেখে, এটি 22-60 = -38 এর স্কোরের জন্য এক্সপ্রেশন এবং পাওয়ার অপারেটর বোনাস অর্জন করবে বলে মনে হচ্ছে।
গ্যারেথ

এটি +/,10#.inv>:i.আরও কম হবে। তবে এটি এখনও একটি ফাংশন এবং ওপির অনুরোধ মতো একটি সম্পূর্ণ প্রোগ্রাম নয়।
১:27

@ গ্যারেথ বোনাস এই উত্তরটির জন্য প্রযোজ্য নয়, কারণ আপনি কেবল কোডের ভিতরেই এক্সপ্রেশন লিখবেন এবং ইনপুট হিসাবে নয়।
১:33:৩৩

1
@ সুইশ এটি প্রথমে আমি যা ভেবেছিলাম তা কিন্তু ম্যাথমেটিকা ​​উত্তরটি এরকমভাবে কাজ করে বলে মনে হচ্ছে।
গ্যারেথ

3

আর, 64 - (50 + 10) = 4

sum(utf8ToInt(paste(0:eval(parse(t=scan(,""))),collapse=""))-48)

এটি চালানো হলে, ব্যবহারকারীকে ইনপুট চাওয়া হয়।


পুরানো সংস্করণ (এক্সপ্রেশন পরিচালনা করতে পারে না): 46 টি অক্ষর:

sum(utf8ToInt(paste(0:scan(),collapse=""))-48)

আমার কাছে এটি ঘটে যে কোডগল্ফ একক-প্রতীক ফাংশনগুলির সাথে ভাষার প্রতি বন্যভাবে পক্ষপাতদুষ্ট। আমরা পূর্বনির্ধারিত u<-function(x) utf8ToInt(x)এবং আরও যদি এই সমাধানটি যথেষ্ট সংক্ষিপ্ত হবে।
কার্ল উইথফট

পছন্দ করুন তবে পূর্বনির্ধারণটি চরিত্রের সংখ্যার জন্যও গণনা করে। যাইহোক: এটি u <- utf8ToIntছাড়া যথেষ্ট function। যদি ফাংশনটি একাধিকবার ব্যবহার করা হয় তবে কোড গল্ফের জন্য এটি সহায়ক হতে পারে।
সোভেন হোহেনস্টেইন

সুতরাং আমি যদি একটি Rcheatcodegolfপ্যাকেজ তৈরি করি তবে সেই প্যাকেজে পূর্বনির্ধারিত ফাংশনগুলি ব্যবহার করা কি আইনী? :-)
কার্ল উইথফট

হ্যাঁ, প্যাকেজগুলি ব্যবহার করা যেতে পারে @ অবশ্যই, প্যাকেজটি কাজের জন্য লেখা উচিত নয়। তবে যদি এতে কেবলমাত্র ফাংশনের জন্য সংক্ষিপ্ত নাম অন্তর্ভুক্ত থাকে তবে এটি ঠিক।
সোভেন হোহেনস্টেইন

3

ব্যাচ - (181 - 50) - 131

কিছুটা মজা করার জন্য।

@set/av=%1
@setLocal enableDelayedExpansion&for /L %%a in (1,1,%v%)do @set a=%%a&powershell "&{'%%a'.length-1}">f&set/pb=<f&for /L %%c in (0,1,!b!)do @set/as+=!a:~%%c,1!
@echo !s!

আমি এটিকে কিছুটা পাঠযোগ্য করে তুলব:

@set /a v=%1
setLocal enableDelayedExpansion
for /L %%a in (1,1,%v%) do (
    @set a=%%a
    powershell "&{'%%a'.length-1}">f
    set /p b=<f
    for /L %%c in (0,1,!b!) do @set /a s+=!a:~%%c,1!
)
@echo !s!

পাওয়ার শেল কমান্ডের আউটপুট পেতে লুপের জন্য ওল্ড পদ্ধতি ব্যবহার করে, কোনও ফাইল থেকে লেখা এবং পড়ার বিপরীতে:

@set /a v=%1
@setLocal enableDelayedExpansion&for /L %%a in (1,1,%v%)do @set a=%%a&for /F usebackq %%b in (`powershell "&{'%%a'.length-1}"`)do @for /L %%c in (0,1,%%b)do @set /a s+=!a:~%%c,1!
@echo !s!

গাণিতিক এক্সপ্রেশন গ্রহণ করতে vব্যবহার করে - কোনও চলকটিতে ইনপুট সেট করুন /a
দুর্ভাগ্যক্রমে বিলম্বিত প্রসারণ সক্ষম করা প্রয়োজন ছিল।
ইনপুটযুক্ত মান থেকে 1 থেকে লুপের জন্য একটি ব্যবহার করুন v
9 এর বেশি সংখ্যক হ্যান্ডেল করার জন্য, আমাকে স্ট্রিংয়ের দৈর্ঘ্য পেতে পাওয়ারশেল ব্যবহার করতে হবে তারপরে লুপটির জন্য অন্য স্ট্রিংটিকে বিভক্ত করতে এবং যোগফলকে যোগ করতে হয়েছিল - s
আপনি পারে নাম পরিবর্তন powershell.exeকরতে p.exeসি অধীনে: \ Windows \ সিস্টেম 32 \ WindowsPowerShell \ v1.0 হওয়া \ তারপর সঙ্গে এটি কল p "&{'%%a'.length-1}, 9 বাইট সংরক্ষণ। তবে এটি আসলে এর চেতনায় নয়।

H:\>sumof.bat 12
51
H:\>sumOf.bat (55*96-12)
81393

আমার মধ্যাহ্নভোজের বিরতি নেওয়ার সময় সেই দ্বিতীয়টি ছেড়ে চলে গেল।

আমি সত্যিই সংখ্যার যে সঙ্গে এটি পরীক্ষা করতে পারবেন না খুব কিভাবে মন্থর হয় কারণে এই চেয়ে অনেক বড়। তবে এটি মোটামুটি বড় সংখ্যক জন্য কাজ করা উচিত। 2147483647নিম্নলিখিত ত্রুটিটি দেওয়ার আগে এটি নেওয়া সবচেয়ে বড় সংখ্যা (সর্বোচ্চ 32 বিট পূর্ণসংখ্যার) -

H:\>sumOf.bat 2147483648
Invalid number.  Numbers are limited to 32-bits of precision.

এটি অবশ্যই আমাকে চ্যালেঞ্জ থেকে অযোগ্য ঘোষণা করে।


1
চমৎকার সমাধান! এটি নিচে গল্ফ করার কয়েকটি উপায় রয়েছে। 1. আপনি অস্থায়ী পরিবর্তনশীল থেকে মুক্তি পেতে vএবং %1সরাসরি ব্যবহার করতে পারেন । ২. আপনি আপনার পাওয়ারশেল স্ক্রিপ্টের মধ্যে 1 টি বিয়োগ করতে পারেন তার চেয়ে লম্বা @set /a b=%%b-1যা আপনাকে একগুচ্ছ সাশ্রয় করে। এই পরিবর্তনগুলি সহ, আমি এটি মূল 240 থেকে 211 এ নামিয়ে আছি: :-)
চিহ্নিত করুন

ওফস, আমি এখন দেখছি আপনি কেন আপনার টেম্প ভেরিয়েবল রেখেছেন (বোনাস পয়েন্টের জন্য)। পাওয়ারশেলের টিপটি এখনও রয়ে গেছে, যদিও ...
চিহ্নিত করুন

ধন্যবাদ, ধন্যবাদ। এখনই বদলে যাবে।
চাচা

ব্যাচ কাজ করবে না। এটি সীমাবদ্ধ (2 ^ 31) -1 (স্বাক্ষরিত 32-বিট পূর্ণসংখ্যার)। চ্যালেঞ্জটির জন্য ইনপুটগুলি হস্তান্তর করা প্রয়োজন (2 ^ 64) -1 (স্বাক্ষরবিহীন -৪-বিট পূর্ণসংখ্যার, তবে সেই মানটির জন্য আউটপুট এটি উপচে যাবে)। এখানেই পাওয়ারশেলের একটি স্বতন্ত্র সুবিধা রয়েছে - এর [decimal]ধরণটি (2 ^ 96) -1 পর্যন্ত মানগুলির জন্য অনুমতি দেয়।
ইসজি

1
যদিও ব্যাচকে পূর্ণসংখ্যা বিভাগকে ডিফল্ট করার জন্য কিছু ভাল ক্রেডিট দেব। পাওয়ারশেল পুরোপুরি অনুপস্থিত।
ইসজি

3

ডায়ালগ এপিএল , 9 - 160 * = -151

+/⍎¨∊⍕¨⍳⎕

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

মূল্যায়ন ইনপুট
 যেমন "7+5"দেয়12

সূচকগুলি 1 ... এন
[1,2,3,4,5,6,7,8,9,10,12]

⍕¨ প্রতিটি সংখ্যাটিকে স্ট্রিংয়ে ফর্ম্যাট করুন
["1","2","3","4","5","6","7","8","9","10","11","12"]

তালিকাভুক্ত (সমতল)
"123456789101112"

⍎¨ প্রতিটি অক্ষর কার্যকর করুন (একক সংখ্যা সংখ্যার ফলনের তালিকা)
[1,2,3,4,5,6,7,8,9,1,0,1,1,1,2]

+/ সমষ্টি  51


* স্কোরিং

-50 বোনাস এটি এমনকি ইনপুট হিসাবে এক্সপ্রেশন গ্রহণ করে। অভিব্যক্তিটি অবশ্যই বৈধ এপিএল হতে হবে, যা ওপি অনুসারে গ্রহণযোগ্য

-10 বোনাস কারণ এটি ^( *এপিএলে ) ও পরিচালনা করে ।

-100 বোনাস কারণ এক্সপ্রেশন ইনপুট স্পষ্টভাবে ব্যবহার ব্যতীত পরিচালনা করা হয় eval(যেমন এপিএলে)।


আপনি কি নিশ্চিত যে এখানে -100 বোনাস যুক্ত হয়েছে? কারণ এতে বলা হয়েছে " -100 বোনাস যদি আপনার কোড -50 বোনাসের জন্য যোগ্যতা অর্জন করে এবং এক্সপ্রেশনগুলি পরিচালনা করতে eval অনুরূপ না ব্যবহার করে। " যেহেতু ⍎¨প্রতিটি চরিত্রকে একে একে চালানো হয় বলে মনে হয়, এটি অক্ষরের মতোই রয়েছে (অক্ষরগুলি নির্বাহ ব্যতীত) একের পর এক পরিবর্তে সকলের মতো evalকরে)।
কেভিন ক্রুজসেন

@ কেভিন ক্রুজসেন হ্যাঁ, কারণ এটি অভিব্যক্তিগুলি পরিচালনা করতে ইওল বা অনুরূপ ব্যবহার করে না ⍎¨অঙ্কগুলি শুধুমাত্র পূর্ণসংখ্যায় রূপান্তর করতে ব্যবহৃত হয়, এক্সপ্রেশনগুলি হ্যান্ডেল করার জন্য নয়।
Adám

আহ অপেক্ষা করুন, আমি আপনার ব্যাখ্যাটি ভুলভাবে দেখেছি। কিন্তু নয় ধরণ একটি ইনপুট + + Eval builtin তারপর, অথবা Eval সবসময় পরোক্ষভাবে সম্পন্ন করা হয় যখন এক্সপ্রেশন ইনপুট হয়?
কেভিন ক্রুজসেন

1
@ কেভিন ক্রুজসেন সর্বদা ইনপুট হিসাবে একটি অভিব্যক্তি গ্রহণ করে, মূল্যায়ন করে এবং এর ফলাফলটি ফিরিয়ে দেয়। সুতরাং একটি স্ট্রিং ইনপুট করতে, আপনি এর চারপাশে উদ্ধৃতি দিতে হবে। কোনও সম্পর্কিত অন্তর্নির্মিত ( ) কাঁচা পাঠ্য হিসাবে ইনপুটটি ফেরত দেয় তা সত্য নয় (বিশেষত যেহেতু প্রতীকগুলি ইঙ্গিত দেয় যে প্রাথমিক ইনপুট পদ্ধতি, এবং একটি বিশেষ বৈকল্পিক), অন্যথায় বোনাস পাওয়ার জন্য গণিত বাস্তবায়ন করতে হবে মূল্যায়নকারী - মূল কাজটির চেয়ে সম্পূর্ণ ভিন্ন একটি কাজ। আমি বোনাস পছন্দ করি না, এবং -100 একটিকে কেবল নির্বোধ বা এপিএল মনে রেখেছিল, তবে তবে এটি বোনাসের জন্য একেবারে উপযুক্ত বলে মনে হয় না।
Adám

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

2

সি # (161)

using C=System.Console;using System.Linq;class X{static void Main(){C.WriteLine(Enumerable.Range(1,int.Parse(C.ReadLine())).SelectMany(i=>i+"").Sum(c=>c-48));}}

চমত্কার

using C = System.Console;
using System.Linq;

class X
{
    static void Main()
    {
        C.WriteLine(
            Enumerable.Range(1, int.Parse(C.ReadLine()))
                .SelectMany(i => i + "")
                .Sum(c => c - 48)
            );
    }
}

2

পাইথন 3 + বাশ (78 - 185 = -107)

python3 -c"print(sum(sum(map(int,str(x+1)))for x in range(int(${1//^/**}))))"
  • সমস্ত ধনাত্মক সংখ্যা পরিচালনা করতে পারে
  • + - / * অপারেশন দিয়ে এক্সপ্রেশন পরিচালনা করতে পারে
  • handle (শক্তি) অপারেটর পরিচালনা করতে পারে।
  • প্রকাশ বা অনুরূপ ছাড়া এক্সপ্রেশন পরিচালনা করতে পারে ¹

অভিব্যক্তির ফলাফলটি যদি পূর্ণসংখ্যার না হয় তবে এটি প্রথমে কেটে যাবে। অভিব্যক্তির ফলাফলটি যদি নেতিবাচক হয় তবে ফলাফলটি অনির্ধারিত হয়।

এটি ব্যবহার করুন:

bash golf.sh "12 + (42 / 3 + 3^4)"

1: যদি আপনি বাশ থেকে পাইথনকে অনুরোধ করা গণনা না করেন তবে আমি মনে করি এটি কেস নয়। যদি আপনি ভাবেন যে এটি আসলে, তবে অ্যাডজাস্ট করা স্কোর -7 is


আমি বলব যে আপনি যদি কোনও এক্সপ্রেশন মূল্যায়নকারী না লিখে থাকেন তবে আপনি ওয়াল এর সমতুল্য কিছু ব্যবহার করছেন। তবে আমি ওপি নই, তাই শুভ কামনা!
টোবিয়া

@ টোবিয়ার সাথে সম্মত হোন, এক্সপ্রেশন মূল্যায়নের জন্য কোনও বোনাস নেই।
ST3

2

জাভা, 254

class T
{
    public static void main(String[] a)
    {
        long target = 10, count = 0;
        String[] digits = new String[50];
        for (long i = 1; i <= target; i++)
        {
            digits = String.valueOf(i).split("(?!^)");
            for (int j = 0; j < digits.length; j++)
                if (digits.length > j)
                    count += Integer.parseInt(digits[j]);
        }
        System.out.println(count);
    }
}

অভিব্যক্তি পরিচালনা করে আপনি টার্গেটে যা ইচ্ছা প্রকাশ করুন। দৈর্ঘ্য পর্যন্ত হ্যান্ডেলগুলি পরিচালনা করতে পারে। যদি আপনি সমস্ত স্পেস এক লাইনে ফেলে পরিষ্কার করেন এবং মুদ্রণের জন্য কোনও বিবৃতি না পান তবে এটি 254 অক্ষরে গণনা করা হয় (দীর্ঘ দীর্ঘ শব্দ ভিত্তিক জাভা প্রোগ্রামিং বিবেচনা করে)।

পিএস: এটি একটি সম্পূর্ণ প্রোগ্রাম, কেবল যুক্তিই নয়। প্রোগ্রামের জন্য দেওয়া শব্দ গণনা, কেবল যুক্তি নয়।


2

জাভা (জেডিকে 8), 272

আমার প্রথম চ্যালেঞ্জ আমি রয়েছি, পরামর্শগুলি স্বাগত =)

import java.util.*;import java.util.stream.*;class C{public static void main(String[]a){System.out.print(Arrays.asList(IntStream.range(1,new Integer(a[0])).mapToObj(s->s+"").collect(Collectors.joining()).split("")).stream().map(Integer::valueOf).reduce(0,Integer::sum));}}

ইন্ডেন্টযুক্ত:

import java.util.*;
import java.util.stream.*;

class C {

   public static void main(String[] a) {
     System.out.print(Arrays.asList(IntStream.range(1,new Integer(a[0]))
            .mapToObj(s->s+"")
            .collect(Collectors.joining())
            .split(""))
            .stream()
            .map(Integer::valueOf)
            .reduce(0,Integer::sum));
  }
}

জাভাতে গল্ফ কোড চ্যালেঞ্জ করে এমন প্রত্যেকেরই এটি উপযুক্ত, তবে মনে হয় আপনি গল্ফ করার সময় স্ট্রিম এপিআই আপনাকে সুবিধা দেয় না। আপনি যদি আপনার সমাধানটি পুনরায় লিখেন এবং আপনি লুপগুলি পরিবর্তে ব্যবহার করতে পারেন তবে এটি সংক্ষিপ্ত হবে Ill
ব্যবহারকারী 902383

2

সিজোম, 9 - 25 = -16

সিজেএম এই চ্যালেঞ্জের চেয়ে কয়েক মাস ছোট, সুতরাং এটি সবুজ চেকমার্কের জন্য উপযুক্ত নয়। তদ্ব্যতীত, এটি প্রথম স্থানে পার্লকে মারছে না। ;) যদিও আমি পদ্ধতির বিষয়টি বেশ পছন্দ করেছি, তাই আমি যাইহোক এটি পোস্ট করতে চাই।

l~),s:~:+

এটি এখানে পরীক্ষা করুন।

ধারণাটি 0 থেকে এন পর্যন্ত একটি ব্যাপ্তি তৈরি করা হয় This এই ব্যাপ্তিটি পরে একটি স্ট্রিংয়ে রূপান্তরিত হয়, যা কেবল পূর্ণসংখ্যাগুলি পিছনে পিছনে সংযুক্ত করে। এন = 12 এর জন্য, আমরা পেয়ে যাব

"0123456789101112"

তারপরে প্রতিটি অক্ষর একটি পূর্ণসংখ্যায় রূপান্তরিত হয় :~( পূর্ণসংখ্যার অ্যারের ফলন করে) এবং তারপরে সংক্ষিপ্ত করে :+। সিজেএম নির্বিচারে বড় পূর্ণসংখ্যার সাথে ডিল করতে পারে।


2

পাইথন 3 + এস্টার ,1017 1007 বাইট - (25 + 50 + 100) = স্কোর: 842 834

অপসারণ করে tsএবং পরিবর্তন করে 10 বাইট সংরক্ষণ করেছেনp

সম্পাদনা: আমি হাস্যকরভাবে দীর্ঘ পূর্ণসংখ্যার পরীক্ষা করতে অক্ষম (1234567891234567891234564789087414984894900000000) [আমার কম্পিউটার হ্যাং করে] তবে আমার জ্ঞান থেকে পাইথন 3 আরবিট্রালি দীর্ঘ পূর্ণসংখ্যার সমর্থন করে।

এই বাস্তবায়ন ব্যবহারসমূহগালাগাল AST। আমি এএসটিকে আপত্তিজনকভাবে "ইভাল বা অনুরূপ" হিসাবে বিবেচনা করব না।

from ast import*
from astor import*
nt,bo,m,d,a,s,n,p,ty=NodeTransformer,BinOp,Mult,Div,Add,Sub,Num,map,type
class M(nt):
    def visit_BinOp(t,z):
        if ty(z.left)==bo and ty(z.right)==bo:return bo(t.visit_BinOp(z.left),z.op,t.visit_BinOp(z.right))
        if ty(z.left)==bo:return bo(t.visit_BinOp(z.left),z.op,z.right)
        if ty(z.right)==bo:return bo(z.left,z.op,t.visit_BinOp(z.right))
        if ty(z.op)==m:return n(z.left.n*z.right.n)
        if ty(z.op)==d:return n(z.left.n/z.right.n);return z
class A(nt):
    def visit_BinOp(t,z):
        if ty(z.left)==bo and ty(z.right)==bo:return bo(t.visit_BinOp(z.left),z.op,t.visit_BinOp(z.right))
        if ty(z.left)==bo:return bo(t.visit_BinOp(z.left),z.op,z.right)
        if ty(z.right)==bo:return bo(z.left,z.op,t.visit_BinOp(z.right))
        if ty(z.op)==a:return n(z.left.n+z.right.n)
        if ty(z.op)==s:return n(z.left.n-z.right.n);return z
class S(nt):
    def visit_Num(t,z):return n(sum(p(int,list("".join(p(str,range(1,z.n+1)))))))
print(to_source(S().visit(A().visit(M().visit(parse(input()))))))

নিরপেক্ষ লেখাতে খুব অলস, তাই আমি আপনাকে ক্লাসগুলির একটি ব্যাখ্যা দেব:

M(NodeTransformer|nt) - converts multiplication and division into their results.
A(NodeTransformer|nt) - converts addition and subtraction into their results.
S(NodeTransformer|nt) - converts numbers into their sum of digits via the Pythonic (naïve) way.

শেষ লাইনটি কেবলমাত্র এই ক্লাসগুলি ইনপুটটিতে যথাযথ ক্রমে চালিত করে, ক্রিয়াকলাপের ক্রম সংরক্ষণ করে এবং অবাঞ্ছিত আচরণ রোধ করে।

ব্যবহারের উদাহরণ ($ বা> এর অর্থ ব্যবহারকারী ইনপুট) এবং উপায় দ্বারা, আসল প্রোগ্রামটি কেবল একবার ইনপুট নেয়:

$ python3 summer.py
> 5
15
> 10
46
> 12
51
> 1000000
27000001
> 55*96-12
81393

এটি আশ্চর্যজনক তবে তবুও ভয়াবহ। এটি অনুমোদিত হয়েছে কিনা তা নিশ্চিত নয় (জেনে বুঝে দীর্ঘ সমাধান ব্যবহার করার জন্য), তবে আমার কাছ থেকে 10/10
Rɪᴋᴇʀ

@ EᴀsᴛᴇʀʟʏIʀᴋ কেন এটি জেনেশুনে দীর্ঘ সমাধান ব্যবহারের অনুমতি দেওয়া হচ্ছে না? আমি কোন সমস্যা দেখতে পাচ্ছি। কমপক্ষে আমি 842+ স্কোর সহ সমাধানগুলিকে পরাজিত করব;)

এগুলি প্রতিযোগিতামূলক উত্তর হওয়ার অর্থ শোয়ের প্রচেষ্টা বলে মনে হয়। এছাড়াও, এই মন্তব্যটি মুছুন। বয়সের জন্য এসই সীমাবদ্ধতা 13 !!! আপনাকে বৈধভাবে অনুমতি দেওয়া পর্যন্ত আপনার অপেক্ষা করা উচিত। COPPA (গুগল এটি) এর কারণে আপনার এই জাতীয় ইন্টারনেট ব্যবহারের জন্য 13 বছর বয়সী হতে হবে।
আর

@ EᴀsᴛᴇʀʟʏIʀᴋ এখন আমি কৌতূহলী, কে ছিল সেই ব্যবহারকারী?
বিড়াল

1
@cat একটি আরবিক নাম আমি উচ্চারণ করতে পারি না? সম্ভবত একাউন্ট অ্যাকাউন্ট।
Rɪᴋᴇʀ

1

সি # (108)

int c(int n){return string.Join("",Enumerable.Range(1,n).Select(i=>i+"")).ToArray().Select(c=>c-'0').Sum();}

চমত্কার

int c(int n)
{
    return string.Join("", Enumerable.Range(1, n).Select(i => i + "")).ToArray().Select(c => c - '0').Sum();
}

3
এটি বৈধ উত্তর নয় কারণ এটি কার্যকারিতা এবং চর গণনাটি বড় ধরনের
এসটি 3

1
আপনার intএস এর দরকার নেই ; সি তে, সমস্ত কিছু ডিফল্ট int... ওহ, এটি সি #।
wizzwizz4

1

রুবি -> 83-50 = 33

p (1..eval(gets.chomp)).each.inject{|c,e|c+e.to_s.chars.map{|x|x.to_i}.inject(:+)}                     

"পরীক্ষা করতে" সংস্করণ:

module Math
  class CountSum
    def sum(number)
      (1..number).each.inject do |c, e|
        c + e.to_s.chars.map{ |x| x.to_i }.inject(:+)                                                  
      end
    end
  end
end 

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

$ rspec sum_spec.rb  --format doc --color

Math::CountSum
  #sum
    single digit number
      when 5, should return 15
    double digit number
      when 12, should return 51
    arbitrary number
      when 1000000 should return 27000001

Finished in 5.34 seconds
3 examples, 0 failures

1

সি # (80)

এটি আমার আরেকটি চেষ্টা।

double c(int n){double s=0;while(n>0)foreach(var c in n--+"")s+=c-48;return s;}

চমত্কার

double c(int n)
{
    double s = 0;
     while (n > 0)
        foreach(var c in n--+"") 
            s += c - 48;
    return s;
}

শ্বেত স্পেস কি এর মধ্যে n--এবং +প্রয়োজনীয়? আমি মনে করি না এটি অন্য সি-স্টাইলের ভাষায় রয়েছে।
ফায়ারফ্লাই

1
এই প্রদত্ত পরিসর দিয়ে কাজ করে? ফলাফল 2^64-164 বিটের মধ্যে খাপ খায় না।
মেরিনাস

2
এটি বৈধ উত্তর নয় কারণ এটি কার্যকারিতা এবং চর গণনাটি বড় একটি বড়।
এসটি 3

@ মারিনাস আপনি কি আমাদের 2 ^ 64-1-এর ফলাফল দিতে পারেন যাতে আমরা জানতে পারি যে আমাদের কোন রেঞ্জের সাথে কাজ করা দরকার? প্রসেসিং সময়টি প্রচুর হবে বলে আমার ভাষায় (পাওয়ারশেল) এটি পরীক্ষা করার সাহস পাচ্ছি না।
ইসজি

@ ইসজি: আমি আসলে এটি চালাচ্ছি না, তবে আপনি কিছু গণিত করতে পারেন: 1) একটি অঙ্কের গড় মান হয় 4.5; 2) 20 সংখ্যার গড় যোগফল 90( 2^6420 টি সংখ্যা রয়েছে); সুতরাং প্রত্যাশিত মান প্রায় হবে 90 * 2^64 ≈ 1.66*10^21। সুতরাং আপনার কমপক্ষে কমপক্ষে 71বিট লাগবে 72
মেরিনাস

1

রুবি 69-50 = 19 (বা -4)

এটি অবশ্যই একসাথে গল্ফ করা যেতে পারে তবে এখানে প্রথম পঞ্চম চেষ্টা রয়েছে

p (1..eval(gets)).inject{|i,s|i+=s.to_s.chars.map(&:to_i).inject :+}

এটি সমস্ত সংখ্যার জন্যও কাজ করে তবে এটি তাদের জন্য খুব ধীর কারণ এটি ও (এন) এর চেয়ে ধীর গতিতে চলে তাই আমি -25 যোগ করব না। যদি অলসতা ঠিক থাকে তবে তা -4 হবে যদিও

রুবি 133-50-25 = 58

এটি দ্রুততম সংস্করণ, যা ও (এন) সময়ের চেয়ে কম সময়ে চলে (এবং প্রকৃত গণিত ব্যবহার করে!), সুতরাং এটি বৃহত্তর পূর্ণসংখ্যার জন্য দ্রুত ফলাফল সরবরাহ করতে পারে, যার ফলে আমি -25 যোগ করেছি:

n=eval(gets);p (d=->n,l{k=10**l;c,r=n.to_s[0].to_i,n%k;n<10?n*(n+1)/2:c*45*l*k/10+k*(c*(c-1)/2)+(r+1)*c+d[r,l-1]})[n,n.to_s.length-1]

আমরা ঠিক একই কোডটি লিখি (আপনি আরও কিছুটা গল্ফ করেছিলেন)!
বেরেরবা

@ বিটারবা হ্যাঁ, এবং প্রায় একই সময়ে, তবে আপনি কিছুটা দ্রুত ছিলেন, সুতরাং আমাকে আলাদা কিছু খুঁজে বের করতে হবে :)
স্জটুপওয়াই

1

হাস্কেল, 74-25 = 49

main=getLine>>=print.sum.map(\c->read[c]).concatMap show.(\x->[0..x]).read


ব্যবহার interactএবং সত্য যে >>=তালিকার জন্য হিসাবে একই flip concatMap, আপনি গলফ পারেন ভালো 63 অক্ষর এই নিচে:main=interact$show.sum.map(\c->read[c]). \x->[0..read x]>>=show
Flonk

সংরক্ষণ করতে আরও একটি বাইট: \c->read[c]হয়read.(:[])
nimi

1

ইসমাস্ক্রিপ্ট 6, 86 - 50 = 36

for(s="",i=eval(prompt());i;s+=i--)alert(s.replace(/\d/g,c=>Array(-~c).join()).length)

একটি অক্ষর কম: for(i=eval(prompt(s=""));i;s+=i--)alert(s.replace(/\d/g,c=>Array(-~c).join()).length)
টুথব্রাশ

বেশ একটু ছোট (আপনি প্রয়োজন হবে না .join()): for(i=eval(prompt(s=""));i;s+=i--)alert(s.replace(/\d/g,c=>Array(-~c)).length)78 - 50 = 28 !
টুথব্রাশ

1

আর (points২ পয়েন্ট)

f=function(n) sum(as.integer(strsplit(paste0(1:n,collapse=""),"")[[1]]))

আউটপুট:

> f(5)
[1] 15
> f(12)
[1] 51
> f(1000000)
[1] 27000001

এই চ্যালেঞ্জগুলির মধ্যে আপনার স্পষ্টভাবে "এফ = ফাংশন (এন)" লিখতে হবে বা কেবল এন দিয়ে ফাংশন লিখতে হবে?
স্ক্যান

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