উত্স কোড পরিবেশগত পদাঙ্ক


102

আপনাকে সবেমাত্র একটি জার্মান গাড়ি উত্পাদনকারী সংস্থা নিয়োগ করেছে। প্রকৌশলী হিসাবে আপনার প্রথম কাজটি হ'ল এমন একটি প্রোগ্রাম লিখুন যা ASCII স্ট্রিংয়ের ইকোলজিকাল পায়ের ছাপ গণনা করে।

চরিত্রের পরিবেশগত পদাঙ্কটি নিম্নরূপে গণনা করা হয়েছে:

বাইনারি অক্ষরের ASCII কোড লিখুন, এবং 1 এর সংখ্যা গণনা করুন।

উদাহরণস্বরূপ, A2 এর একটি পদচিহ্ন রয়েছে, তবে O5 এর পদচিহ্নের সাথে এটি সুপ্ত।

একটি স্ট্রিংয়ের বিশ্বব্যাপী পদচিহ্ন হল এর অক্ষরগুলির পদচিহ্নগুলির সমষ্টি। একটি খালি স্ট্রিংয়ের শূন্যের একটি পদচিহ্ন রয়েছে।

আপনার প্রোগ্রামকে অবশ্যই ASCII স্ট্রিংটিকে প্যারামিটার হিসাবে (কমান্ড লাইন বা ইনপুট মাধ্যমে) স্বীকার করতে হবে, এর পরিবেশগত পদাঙ্কটি গণনা করতে হবে এবং আউটপুট দিতে হবে। প্রোগ্রামটি নিজেই ASCII এনকোডড থাকতে হবে।

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

testপ্যারামিটার হিসাবে স্ট্রিংটি পাওয়ার পরে প্রোগ্রামটি 0 আউটপুট করা উচিত ।

স্কোরিং

ক্ষুদ্রতম পরিবেশগত পদচিহ্নের সাথে উত্স কোডটি জিতেছে (এবং হ্যাঁ, উত্তরটি testনিষিদ্ধ!)


36
আমি দুঃখিত, আমি খবরটি রাখছি না, তবে আমি কেবল এটি পড়েছি। আমরা কি ধরে নিতে পারি যে জার্মান গাড়ি সংস্থাটিকে অবশ্যই ভক্সওয়াগেন বলা হয় না?
স্তর নদী সেন্ট

7
রেফারেন্সের জন্য, সবচেয়ে ব্যয়বহুল কম ব্যয়বহুল অক্ষরের থেকে:\x7F}~_?{ow7yvu/s\x1F;=znm>k|OW[]^gc\x1Ex\x1D\eef\\'ZY+-VU.St\x173iNM5K6r\x0FG9:q<ljQ\x15\x13pC\aEF8IJL4\x0E21\x16RTh,X*)\x19\v&%\x1A#d\x1C\rab`!\"$(\x180\x05A\x14B\x12\x11DHP\x03\f\x06\n\t\x80\x10\x01@\x04\b\x02 \x00
ক্যারিডরক

19
@ স্টেভেভারিল এটি একটি কাল্পনিক সংস্থা, তবে এর নামটি সত্যই V এর সাথে শুরু হয় এবং এর মাঝখানে কোথাও একটি ডাব্লু রয়েছে। তবে বাস্তবতার সাথে যে কোনও মিলই নিছক কাকতালীয়, কমপক্ষে কেউ আমাদের মামলা করে।
মাইন্ডউইন

1
ফাংশন অনুমোদিত (প্রোগ্রামের পরিবর্তে)?
লুইস মেন্ডো

12
ওরা তোমাকে মিথ্যা বলছে! 1 এর চেয়ে 0 এর চেয়ে অনেক বেশি পরিবেশগতভাবে বন্ধুত্বপূর্ণ। প্রমাণ চান? বাইনারি আপনার উত্স কোড মুদ্রণ। 0 এর 1 এর চেয়ে প্রায় দ্বিগুণ কালি ব্যবহার। এবং যদি আপনি একটি অন্ধকার পটভূমি সহ কোড করেন তবে এগুলি আপনার স্ক্রিনে প্রদর্শন করতে আরও বিদ্যুৎ অপচয় করে। (যদি আপনি একটি সাদা ব্যাকগ্রাউন্ডের সাথে কোড করেন তবে আপনি ইতিমধ্যে সমস্ত সাদা বর্ণিত ইলেকট্রনগুলি নষ্ট করছেন, সুতরাং পরিষ্কারভাবে যে কোনও পরিবেশ সচেতন প্রোগ্রামারকে তাদের সম্পাদকটিতে একটি কালো ব্যাকগ্রাউন্ড ব্যবহার করা উচিত)) অতিরিক্ত পরিবেশ বান্ধব হওয়ার জন্য, আমাদের সকলকে লেখা উচিত হোয়াইটস্পেস ...
ড্যারেল হফম্যান

উত্তর:


45

সিজেম, 33 31

"",AA#b:c~

1130000000095000000000000001111000000010100000001150000000116000000000000000000000000003333000000004000000008800001000000000500000000000000000000880000004900000102000000000000900000090000 এর মাধ্যমে রয়েছে।

কোডটি সমান

11300000000950000000034000000011600000001010000000115000000011600000000340000000061000000003300000000420000000058000000010500000000500000000102000000009800000000490000000102000000009800000000490000000098
AA#b:c~

যা অনলাইনে পরীক্ষা করা যায়

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

"",  e# Push the length of the string.
AA#  e# Push 10000000000.
b    e# Turn the length into the array of its base-10000000000 digits.
:c   e# Cast each digit to character. This pushes the following:
     e# q_"test"=!*:i2fb1fb1b
~    e# Evaluate the string.

কিভাবে যে কাজ করে

q_     e# Read all input and push a copy.
"test" e# Push the string "test".
=!*    e# Check for inequality and repeat the string 0 or 1 times.
       e# This replaces input "test" with the empty string.
:i     e# Cast each character to integer
2fb    e# Replace each integer by the array of its base-2 digits.
1fb    e# Replace each array of base-2 digits by the sum of its digits.
1b     e# Add the sums of digits.

এই উত্স কোডটির 75 টির একটি পরিবেশগত পদাঙ্ক রয়েছে।


3
বাহ, চালাক আমার অনুমান যে সাবধানবাণীটি হ'ল আপনি কখনই এটি চালাতে পারবেন না, যেহেতু বিশ্বের সমস্ত স্মৃতি পুরো কোডটি ধরে রাখতে পারে না।
রেটো কোরাডি

49
এটি একটি সামান্য অসুবিধা। আপনি প্রকৃতির দাম রাখতে পারবেন না।
ডেনিস

এটি একটি দুর্দান্ত কৌশল, তবে চালানো না পারলে এটি অবৈধ
edc65

5
@ পাইরুলেজ: কোনও বিষয় নয়, যদি না এটি পদার্থ ব্যতীত অন্য কোনও কিছু তৈরি করে এবং স্থান ব্যতীত অন্য কিছু দখল করে না।
vsz

5
কেন শুধু লেঙ্গেজ ব্যবহার করবেন না?
jimmy23013

40

দৈর্ঘ্য , 0


আউটপুট অচেনা , যেহেতু দৈর্ঘ্য 10 / তে ব্রেইনফাকের পূর্ণসংখ্যা মুদ্রণের কোনও বুদ্ধিমান উপায় নেই।

আসল উত্স কোড রয়েছে

22360559967824444567791709913713659826044558304969374451791514225490473373040212332757409553558758107085015797320276213515502796255082717802632399123502087743818475438512153373406931103005017157351410347278489842099128517039634739852783737052963203448945756470632484148121769939122103257063633371522287190530269279693540898545359211009781370158317748609540216376596783541124510013448091325488601732964773653391702083563797082990404753843419895799343996435988722965711513708742853668363743953430527328863418281733901770990932025503662188187254784985474815936854540100376410040743052620419372327997519047616042603909398552951490180076364164838561112002025592431155898041427468731461614504254168899805662501979953318388813759833797929243626668399650485310047043700001093878284174322463350892654886806075148010832042248607926124030339950499631072150856939786062937034833055717723216663269161130154002679878012158315587925933383341827053312086716181702533743607685576475754259877651521989944802973721727159955208722180232955193930065862370838526521351991966172723976565264862909528310162816593997640732796289501819499741414526385058421824690665542546821941125191276568479078107133076037506211133628962099403163812267452274532219562823184225236020523509355625620557197876838014050964240952738109101849512504021041103516630358995290177306585560988278630098667702211916671663291473843258785929522017507744814910480115446168939335008597569919072874897148594826036210511162928991890818427747059833051607455121463371211282760364668765311589329918870071117807132901910082663054895226456039171170783440772764031568108965851688162729239711772886386306884508520204834432674839183166053019421652064937613583258148354531835035461504442885024563141848164279928769795684221364984104923764359842286827870778678989243517189772102669283996930513577004801536579491093711362942690905779844535371088542020595945700544234301668098553671685123172583259206072965508639556627967633275762621813851479909708616154198658896714629908456913467267354690109885368211752176196164620615081464122410029328694509842558492529684841818953632659248840216891072110853731776562597900145806210691868173380612838327841104919352821441230296200143603175486627682007399030356592930049570084097858148122367

নাল বাইটস এবং নিম্নলিখিত ব্রেনফাক প্রোগ্রামের সমতুল্য:

,[<<+++++++++++++++++++++++++++++++++++++++++++++++++>>>>>>,]
>>>>>>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<<<
<<<++++++++++++++++++++++++++++
[-<----<<<<----<<<<----<<<<---->>>>>>>>>>>>>]
<----<<<<---<<<<+++++++++++<<<<----
<<<<
[>>>>>>>>>>>>>>>>>>>>>>>>]
>>>>
[>>>>>>>>>>>>>>>>>>>>>>>>]
>>>>
[>>>>>>>>>>>>>>>>>>>>>>>>]
>>>>
[>>>>>>>>>>>>>>>>>>>>>>>>]
>>>>
[>>>>>>>>>>>>>>>>>>>>>>>>]
>>>>
[
 <<<<<<<<<<<<<<<<<<<<<<<<
 <<<++++++++++++++++++++++++++++
 [-<++++<<<<++++<<<<++++<<<<++++>>>>>>>>>>>>>]
 <++++<<<<+++<<<<-----------<<<<++++
 >>>>>>>>>>>>
 [
  -[<]<<[.<]
  >>>
  -[<]<<[.<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[.<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[.<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[.<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[.<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[......<]
  >>>
  -[<]<<[.<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[......<]
  >>>
  -[<]<<[..<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[......<]
  >>>
  -[<]<<[...<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[......<]
  >>>
  -[<]<<[....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[......<]
  >>>
  -[<]<<[.....<]
  >>>
  -[<]<<[......<]
  >>>
  -[<]<<[......<]
  >>>
  -[<]<<[.......<]
  <
 ]
]

অনলাইনে এটি brainfuck.tk এ চেষ্টা করে দেখুন ।

ব্রেইনফাক কোডের দৈর্ঘ্য অত্যন্ত সাব-ইস্টিমেটাল - শুরুর জন্য, আমি সমস্ত ASCII অক্ষরের পায়ের ছাপগুলিকে হার্ডকোড করেছি - তবে 0 স্কোর 0 ...


কোনও উপায় নেই, লেংগুয়েজ আসলে নাল বাইট সমর্থন করে ?!
বিটা ক্ষয়

20
আমি এই মত উত্তরটি জনসাধারণের প্রতি সম্মান প্রদর্শন করে না বলে মনে করি: এটি প্রতারণা, এবং সিস্টেমকে গেমিং করছে ... তবে সর্বোপরি এই চ্যালেঞ্জের পুরো বিষয়টি এটি। +1
edc65

1
"আউটপুট অচেনা, যেহেতু দৈর্ঘ্য 10 / বেসেনগুলিতে ব্রেইনফাকের পূর্ণসংখ্যা মুদ্রণের কোনও বুদ্ধিমান পদ্ধতি নেই" " । আমি ভেবেছিলাম দৈর্ঘ্য / ব্রেইনফাকের পয়েন্টের অংশটি হ'ল এটির কিছু করার মতো বুদ্ধিমান পদ্ধতি ছিল না :)
অ্যাডাম

9
আপনার দেওয়া সংজ্ঞা থেকে যখন আমি আপনার প্রোগ্রামটি পুনরায় তৈরি করার চেষ্টা করেছি তখন এটি আমার পক্ষে বেশ কার্যকর হয়নি। আপনি কি দয়া করে পুরো লেঙ্গুয়েজ উত্স পোস্ট করতে পারেন যাতে আমি দেখতে পারি যে আপনার প্রোগ্রামটি পুনরায় তৈরির ক্ষেত্রে আমার প্রচেষ্টা থেকে কোথায় আলাদা? ;-)
আম্মনকে

1
আমাকে যা অবাক করে তা এমন নয় যে লেংগুয়েজ নালাগুলি সমর্থন করে, তবে আপনি বিএফ-তে এমন একটি প্রোগ্রাম তৈরি করতে পেরেছিলেন। হান্টিং ...
এরিক দি আউটগলফার

12

পাওয়ারশেল, 337 344 304 পয়েন্ট

PARAM([CHAR[]]$A)$A|%{$B+=([CONVERT]::TOSTRING(+$_,2)-REPLACE0).LENGTH};($B,0)[-JOIN$A-CEQ"test"]

আমি আপনার মুখোমুখি হয়ে উঠছি!

ইনপুট হিসাবে গ্রহণ করে $A, তারপরে চার-অ্যারে হিসাবে কাস্ট করে, তারপরে প্রতিটি চরিত্রের জন্য একটি লুপ ধরে পুনরাবৃত্তি করে, [convert]::ToString()সেই অবস্থানটিতে অক্ষরটিকে বাইনারি রূপান্তরিত করার জন্য হাস্যকর শব্দযুক্ত শব্দ ব্যবহার করে , সমস্ত 0 এর পরিবর্তে কোনও কিছুই নেই, তারপরে দৈর্ঘ্য গণনা করা হয় এবং যে যোগ করে $B। শেষে, একটি গতিশীল অ্যারেতে সূচীকরণের জন্য একটি সমতুল্যতা ব্যবহার করে (যেমন, যদি $Aহয় testতবে তা -CEQহয় $TRUE, তাই এটি দ্বিতীয় উপাদানের সাথে সূচক হয় 0)।

সম্পাদনা 1 - সংশোধিত পরীক্ষার কেস এডিট 2 - "TEST"
অক্ষরগুলি তাদের সূচকগুলির চেয়ে বরং পুনরাবৃত্তি করে এবং -replaceআপনি যদি এটিকে কিছু না দিয়ে প্রতিস্থাপন করেন তবে দ্বিতীয় প্যারামিটারের দরকার নেই তা মনে রেখে গল্ফ করেছেন।


ডাবল উদ্ধৃতি " 00100010একক উদ্ধৃতির চেয়ে পরিবেশবান্ধব ' 00100111
জ্যাকব ক্রোল

ইনপুটটির জন্য ভুল মান 0 প্রদান করে"TEST"
জ্যাকব কুলরে

1
ডাবল উদ্ধৃতি উপর গুড ধরা @JacobKrall "-CEQকেস-সংবেদনশীলতার জন্যও সংশোধন করা হয়েছে। এটি পয়েন্টগুলি কিছুটা বাড়িয়েছে, কারণ আমি ' 'আমার পরীক্ষাগুলিতে সঠিকভাবে ডিলিট না করায় আমি ভুলভাবে স্কোর করছিলাম।
অ্যাডমবর্কবার্ক

9

পাইথ - 52 49

তিনটি পয়েন্ট সংরক্ষণ করুন @ অর্পলকে ধন্যবাদ

*/.BQ`1nQ"test

পদচিহ্ন সংরক্ষণ করতে উদ্ধৃতিগুলিতে ইনপুট নেয়।

টেস্ট স্যুট


ওহ, আমি প্রায় আপনার মত একই পেয়েছিলাম, কিন্তু আমার উত্তর খুব অনুরূপ এবং আপনি প্রথম পোস্ট। 3 :) সংরক্ষণের @,0সাথে প্রতিস্থাপন করুন*
orp

1
@ মালটিসেন আপনি বলেছেন যে আপনি তিনটি পয়েন্ট পেয়েছেন তবে উত্সটি এখনও বলেছে @,0, আপনি কি পরিবর্তন করতে ভুলে গেছেন ?
তালি

@ কনফিউজড এমআর_সি হ্যাঁ আমি কেবল পারমালিঙ্ক পরিবর্তন করেছি এবং আসল উত্তরটি ভুলে গেছি।
মালটিসেন

7

সাধারণ লিপ, 294 281 235

স্কোর হ্রাস করার জন্য, আমি ভেরিয়েবলের নাম হিসাবে @(ব্যয় 1) এবং !(ব্যয় 2) ব্যবহার করেছি (সম্পাদনা করুন: এবং আমি যদি @ফাংশনে সবচেয়ে বেশি ভেরিয়েবলের জন্য ব্যবহার করি তবে এটি আরও ভাল )। আমি খুব শীট করছি কারণ এটি সস্তা।

(LAMBDA(@)(IF(STRING="test"@)0(LOOP FOR ! ACROSS @ SUM(LOGCOUNT(CHAR-CODE !)))))

প্রিটি-প্রিন্ট

(LAMBDA (@)
  (IF (STRING= "test" @) 0
      (LOOP FOR ! ACROSS @ SUM (LOGCOUNT (CHAR-CODE !)))))

ভাল স্কোর 294;)
Cabbie407

@ ক্যাবি 407 আমি স্কোরিং সম্পর্কে অংশটি মিস করেছি, দুঃখিত :-)
coredump

1
@ ক্যাবি 407 কয়েক মিনিটের জন্য খুব কম স্কোর পাওয়ার আমার অদ্ভুত অনুভূতি ছিল ...
coredump

1
কেবল আপনাকে জানাতে চেয়েছিলাম, কারণ স্কোরিং পদ্ধতি সম্পর্কে জেনে আপনি সম্ভবত অন্য কোড থেকে আপনার কোডটি দেখছেন। এবং আমি দেখছি আপনি ইতিমধ্যে কিছু পরিবর্তন করেছেন।
Cabbie407

1
@ ক্যাবি 407 আমি আপনাকে ধন্যবাদ দিতে ভুলে গেছি, বিটিডব্লিউ। ধন্যবাদ।
coredump

6

জাভাস্ক্রিপ্ট, 279

বাগ ফিক্স সম্পাদনা করুন (প্রতিটি চরের বিট 1 গণনা করা হয়নি)

পপআপের মাধ্যমে ইনপুট এবং আউটপুট সহ একটি সম্পূর্ণ প্রোগ্রাম। ফায়ারফক্সে পরীক্ষিত, যে কোনও আধুনিক ব্রাউজারে কাজ করা উচিত।

B=(P=prompt)(H=D=0)
while(B!="test"&&(A=B.charCodeAt(H++)))while(A)D+=A&1,A>>=1
P(D)

কিছু সরঞ্জাম (ফায়ারফক্সের সাথে পরীক্ষিত)

w=c=>c.toString(2).split('').reduce(function(a,b){return a- -b})

t=[[],[],[],[],[],[],[],[],[]]
u=[[],[],[],[],[],[],[],[],[]]
for(c=1;c<256;c++)
  c<33|c>126&c<161 ? t[w(c)].push('\\'+c) : u[w(c)].push('&#'+c+';')
for(i=0; i++<8;)       
  T.innerHTML+=i+': '+u[i].concat(t[i]).join(' ')+'\n'

function Calc()
{
  var r='', t=0, b
  I.value.split('').forEach(function(c) {
    c = c.charCodeAt(), r += '\n&#'+c+' '+((256+c).toString(2).slice(1))+' : '
    for(b=0;c;c>>=1) b += c&1
    r += b, t += b
  })
  R.innerHTML='Total '+t+'\nDetail'+r
}
#I { width: 400px }
<b>Weight table</b><pre id=T></pre><br>
<b>Counter</b><br><textarea id=I></textarea><button onclick="Calc()">-></button> <pre id=R></pre>


1
এই উত্তরটি অবৈধ - এটি test0 এর পরিবর্তে 17 আউটপুট দেয়
ASCIIThenANSI

পছন্দ করুন @ এএসসিআইথেনানস এটি আমার ব্রাউজারে নেই। তবে আমি আবার চেক করতে যাচ্ছি
edc65

এটি মজাদার ... এটি আপনার কাউন্টারের সাথে পরীক্ষা করে আমি 279 পেয়েছি এবং নিজেই এটি পরীক্ষা করে 277 পেয়েছি I আমি অবাক হলাম যা সঠিক; এটি নতুন লাইনের সাথে কিছু করতে পারে?
ETH প্রোডাকশনগুলি 25:55

@ETH প্রোডাকশনগুলি আমি ডাবল চেক করেছি এবং ডান গণনাটি 279 But তবে এটি একটি নতুন লাইনযুক্ত স্ট্রিংয়ের সাথে কাজ করে না - এটি promptফাংশন সম্পর্কিত একটি সমস্যা । ফায়ারফক্সে, promptনিউলাইনগুলি (2 বিট) স্পেসে (1 বিট) অনুবাদ করে, তাই আমরা 279 এর পরিবর্তে 277
পাই

@ ইথ প্রডাকশনস ... ক্রোমে (উইন্ডোজে) নতুন লাইনটি সিআর এলএফ জুটি হয়ে যায় (3 বিট + 2 বিট) এবং গণনাটি আবারও ভুল
edc65

6

জুলিয়া, 254 246 232

P=readline()
print(P=="test"?0:sum([count_ones(1*A)for A=P]))

count_onesফাংশন তার ইনপুটের বাইনারি প্রতিনিধিত্ব বেশী সংখ্যা গণনা করে।

FryAmTheEggman কে আমার পরিবেশগত পদচিহ্ন হ্রাস করেছে!


1
কোনও সমস্যা নেই, আমি কেবল পরিবেশ সম্পর্কে সত্যই যত্নশীল;)
ফ্রাইআম দ্য এজিগম্যান

6

পাইথন 3, 271

z=input();print([sum([bin(ord(i)).count("1")for i in z]),0][z=="test"])

3
অনেক ছোট পরিবর্তন আমাকে 228
FryAmTheEggman

2
বুলগুলি অন্তর্নিহিত কেন এমন সুবিধা নেবেন না? z=input();print(sum(bin(ord(i)).count("1")for i in z)*(z!="test")).... @ ফ্রাইআম দ্য এজম্যান জিনেক্স?
নাইটশেডকুইন

1
@ নাইটশেডকুইন হাহাহা, তার মানে কি আমি একদিনের জন্য পোস্ট করতে পারি না? : এক্স যাইহোক এটি এই সাইটের একজন নতুন ব্যবহারকারীর জন্য খুব সুন্দর ক্যাচ, দুর্দান্ত কাজ! যাইহোক, পিপিসিজিতে আপনাকে স্বাগতম! :) এছাড়াও, আরও অন টপিকের সাথে, সেমিকোলনটি সরানো যেতে পারে কারণ এটি একটি নতুন লাইনের চেয়ে কিছুটা বেশি ব্যয় করে।
FryAmTheEggman

5

পার্ল, 136 118 73

$_=unpack"B*";$_=y@1@@

@সঙ্গে সব প্রতিস্থাপন\0

ব্যবহারের উদাহরণ:

perl -p entry.pl entry.pl

5

ম্যাটল্যাব, 198 194 বাইট

A=input('','s');~strcmp('test',A)*nnz(dec2bin(A)-48)

প্রথমে স্ট্রিংটি inputফাংশনের মাধ্যমে STDIN থেকে পড়ে read এটি হয়ে গেলে, আমরা ইনপুট স্ট্রিংটিকে স্ট্রিংয়ের সাথে তুলনা করি test। ফলাফলটি যদি না হয় তবে test আমরা প্রতিটি অক্ষরকে তার ASCII কোড এবং তারপরে এর বাইনারি উপস্থাপনার মাধ্যমে রূপান্তর করি dec2bin। এই ফাংশনটির একটি সুন্দর পরিণতি হ'ল আপনি যদি একটি স্ট্রিং জমা দেন তবে এর ASCII কোডের বাইনারি উপস্থাপনাটি প্রতি লাইন প্রতি একটি অক্ষর হিসাবে সীমিত করা হয়।

উদাহরণ হিসাবে:

>> dec2bin('ABCD')

ans =

1000001
1000010
1000011
1000100

dec2binএকটি অক্ষরের অ্যারে আউটপুট করে। একবার এটি হয়ে গেলে, 48 দ্বারা বিয়োগ করুন, এটি 0 এর জন্য ASCII কোড যাতে ম্যাট্রিক্স double0 এবং 1 এর সমন্বয়ে রূপান্তরিত হয় । একবার এটি হয়ে গেলে, nnzএই ম্যাট্রিক্সে অ-শূন্য উপাদানগুলির মোট সংখ্যা গণনা করার জন্য একটি কল । মনে রাখবেন যে এই ফলাফলটির সাথে তুলনা করে স্ট্রিংয়ের বিপরীতে গুন করা হয়েছে test। স্ট্রিংটি না হওয়া উচিত test, আমরা পদচিহ্ন গণনা পাই। যদি এটি সমান হয় তবে গুণটির ফলাফল 0 হয়।

কিছু উদাহরণ:

>> A=input('','s');~strcmp('test',A)*nnz(dec2bin(A)-48)
A

ans =

     2

>> A=input('','s');~strcmp('test',A)*nnz(dec2bin(A)-48)
O

ans =

     5

>> A=input('','s');~strcmp('test',A)*nnz(dec2bin(A)-48)
test

ans =

     0


>> A=input('','s');~strcmp('test',A)*nnz(dec2bin(A)-48)
  %// Note - no characters were added here.  Simply pushed Enter

ans =

     0

যদি আপনাকে যোগাযোগের সরঞ্জামবক্স ব্যবহার করার অনুমতি দেওয়া হয় তবে আপনি de2biপরিবর্তে এটি ব্যবহার করতে পারেন এবং -48এটি একটি সংখ্যাসূচক ধরণের (পাশাপাশি ফাংশনের নামে 2 টি অতিরিক্ত অক্ষর) কাস্ট করতে এড়াতে পারেন ।
বেকার

5

সজোরে আঘাত 440 430 412 405 403

A=0
[ test != "$1" ]&&for((D=0;D<${#1};D++)){
A=$((A+`bc<<<$(printf "obase=2;%d" "'${1:$D:1}")|tr -d "0
"|wc -m`))
}
echo $A

অনেকটাই অকপট. ইনপুট অক্ষর সঙ্গে (ASCII প্রথম রূপান্তর loops printf %dএবং নেতৃস্থানীয় 'বাইনারি (দিয়ে তারপর সংখ্যার উপর bc), আউট রেখাচিত্রমালা zeros এবং অক্ষরের সংখ্যা গণনা করে।

দুর্দান্ত উত্তর নয় তবে এখনও বাশের চেষ্টা দেখেনি।

আমার প্রথম উত্তরের মাধ্যমে ইনপুট স্ট্রিংটি কেবলমাত্র কমান্ড লাইনে দেওয়ার অনুমতি দেওয়া হয়েছে (যেমন এটি বহুগুণযুক্ত শব্দ হলে এটি একাধিক ইনপুট প্যারাম হয়ে উঠেছে) তবে কিছু অন্যান্য উত্তর পড়ার পরে আমি মনে করি যে এটি উদ্ধৃত করা যেতে পারে তাই পুরো স্ট্রিংটি আসে $1


1
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! 1. আপনি doসাথে {এবং doneসাথে প্রতিস্থাপন করতে পারেন }। ২. আপনার চারপাশের জায়গাগুলিরও দরকার নেই <<<। ৩. আপনি \nএকটি আক্ষরিক লাইনফিড দিয়ে প্রতিস্থাপন করতে পারেন ।
ডেনিস

ধন্যবাদ ডেনিস। এই সাইটের চ্যালেঞ্জগুলির মধ্যে একটি হ'ল "ভাল অভ্যাস" :) এর গুচ্ছটি উন্মোচন করা।
আদম

3
এটা নিশ্চিত যে. আপনি যদি ইতিমধ্যে না থাকেন তবে আমি বাশে গল্ফ করার টিপসগুলি পরীক্ষা করে দেখার পরামর্শ দিই । এটি একটি দুর্দান্ত সম্পদ।
ডেনিস

3
গল্ফ স্ট্যান্ডার্ড করেও এই চ্যালেঞ্জটি অদ্ভুত! অতিরিক্ত অক্ষরগুলি এখনও পয়েন্টগুলি সংরক্ষণ করতে পারে। ব্যবহার =এবং ||ব্যবহার যেহেতু খরচ 15 !=এবং &&শুধুমাত্র 13 হয়! একটি অতিরিক্ত চরিত্র তবে দুটি পয়েন্ট সংরক্ষণ করে ...
অ্যাডাম

5

সিলোন, 1431 , 764 , 697 , 571 , 547 , 538 , 501 , 493 , 467 , 451

shared void p(){print(sum{0,if(exists a=process.arguments[0])if(a!="test")for(c in a)for(b in 0..7)if(c.hash.get(b))1});}

এটি ছিল আদি, নিরপেক্ষ:

Integer footprintCharacter(Integer b) {
    return sum({0, for(i in 0..7) if(b.get(i)) 1 });
}
Integer footPrintString(String s) {
    if(s == "test") {return 0;}
    return sum({0, for(c in s) footprintCharacter(c.integer)});
}
shared void footprint() {
     if(exists s = process.arguments[0]) {
         print(footPrintString(s));
     } else {
         print("This program needs at least one parameter!");
     }
}

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

সিলোন এর sumফাংশনটি এমন কোনও ধরণের উপাদানগুলির একটি খালি-খালি আইটেবল গ্রহণ করে যা পূরণ করতে হয় Summable, অর্থাত্ plusপূর্ণসংখ্যার মতো একটি পদ্ধতি রয়েছে । (এটি খালি সিকোয়েন্সগুলির সাথে কাজ করে না কারণ প্রতিটি সাম্মেবল টাইপের নিজস্ব শূন্য থাকে এবং রানটাইমটি কোনটি বোঝায় তা জানার কোনও সুযোগ নেই))

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

আসুন আমরা কীভাবে এটি সঙ্কুচিত করতে পারি তা দেখুন। প্রথমত, প্রতিটি ক্রিয়াকলাপ কেবল একটি জায়গায় ডাকা হয়, তাই আমরা সেগুলি ইনলাইন করতে পারি। এছাড়াও, উপরে উল্লিখিত হিসাবে, ত্রুটি বার্তা থেকে মুক্তি পান। (764 পদচিহ্ন পয়েন্ট।)

shared void footprint() {
    if (exists s = process.arguments[0]) {
        if (s == "test") {
            print(0);
        } else {
            print(sum({ 0, for (c in s) sum({ 0, for (i in 0..7) if (c.integer.get(i)) 1 }) }));
        }
    }
}

আমাদের আসলে অভ্যন্তরীণ নেস্টেডের দরকার নেই sum, আমরা এটির একটি বড় উপলব্ধি করতে পারি। (এটি আমাদের sum({0,})জন্য পাদদেশের 37 37 পয়েন্ট এবং আরও কিছু সাদা অংশের জন্য সংরক্ষণ করে , যা যাইহোক শেষে শেষ করে দেওয়া হবে)) এটি 7৯7:

shared void footprint() {
    if (exists s = process.arguments[0]) {
        if (s == "test") {
            print(0);
        } else {
            print(sum({ 0, for (c in s) for (i in 0..7) if (c.integer.get(i)) 1 }));
        }
    }
}

আমরা বিশেষ কেসড "test"স্ট্রিংয়ের অনুরূপ নীতিটি প্রয়োগ করতে পারি : সেই ক্ষেত্রে ফলাফলটি 0 হয় (অর্থাত্ যোগফলটির জন্য কিছুই অবদান হয় না), আমরা কেবলমাত্র সংক্ষেপের অংশ হিসাবে এটি করতে পারি (তবে আমাদের শর্তটি উল্টাতে হবে) । এটি প্রধানত আমাদের সংরক্ষণ করে print(0);, কিছু ধনুর্বন্ধনী এবং একগুচ্ছ ইন্ডেন্টেশন স্পেস, 571 পাদদেশে নেমে আসা:

shared void footprint() {
    if (exists s = process.arguments[0]) {
        print(sum({ 0, if (s != "test") for (c in s) for (i in 0..7) if (c.integer.get(i)) 1 }));
    }
}

আমরা প্রথম হিসাবে একই ifপার্শ্ব প্রতিক্রিয়া সহ যে এখন কোনও যুক্তি 0না দিয়ে কিছু করার পরিবর্তে আউটপুটও দেয় । (কমপক্ষে আমি ভেবেছিলাম এটি এখানে ঘটবে, পরিবর্তে মনে হয় এটি চিরন্তন লুপের সাথে ঝুলবে? আজব।)

shared void footprint() {
    print(sum({ 0, if (exists s = process.arguments[0]) if (s != "test") for (c in s) for (i in 0..7) if (c.integer.get(i)) 1 }));
}

আমরা এখানে বিকল্প ফাংশন কল সিনট্যাক্স ব্যবহার করে এখানে ফাংশনটির ()জন্য বাদ দিতে পারি , যা এর পরিবর্তে ব্যবহার করে এবং পুনরাবৃত্ত যুক্তিগুলিতে বোঝাপড়া পূরণ করবে। এটির পদচিহ্ন 538:sum{...}()

shared void footprint() {
    print(sum{ 0, if (exists s = process.arguments[0]) if (s != "test") for (c in s) for (i in 0..7) if (c.integer.get(i)) 1 });
}

ফাংশনটির নাম footprint(40) p(3 ) দ্বারা প্রতিস্থাপন করা আমাদের আরও 37 পয়েন্ট সাশ্রয় করে, আমাদের 501 এ নিয়ে আসে (

shared void p() {
    print(sum{ 0, if (exists s = process.arguments[0]) if (s != "test") for (c in s) for (i in 0..7) if (c.integer.get(i)) 1 });
}

পরিবর্তনশীল নামগুলি s(5) এবং c(4), i(4) এছাড়াও অনুকূল নয়। আসুন a(যুক্তি), d(অঙ্ক?) এবং b(বিট-ইনডেক্স) এগুলি প্রতিস্থাপন করুন । পদচিহ্ন 493:

shared void p() {
    print(sum{ 0, if (exists a = process.arguments[0]) if (a != "test") for (c in a) for (b in 0..7) if (c.integer.get(b)) 1 });
}

আমি বাকি কোনও অ-সাদা অংশের অপটিমাইজেশন দেখতে পাচ্ছি না, সুতরাং আসুন অ-প্রয়োজনের সাদা অংশটি সরিয়ে ফেলুন (প্রতিটি জায়গার জন্য 1 পয়েন্ট, দুটি লাইনের বিরতির জন্য দুটি):

shared void p(){print(sum{0,if(exists a=process.arguments[0])if(a!="test")for(c in a)for(b in 0..7)if(c.integer.get(b))1});}

এপিআই ব্রাউজ করার সময়, আমি পেয়েছি যে ক্যারেক্টার.হ্যাশ আসলে এটির integerবৈশিষ্ট্য হিসাবে একই মান প্রদান করে । তবে এর 30 এর পরিবর্তে মাত্র 14 পয়েন্ট রয়েছে, সুতরাং আমরা 451 এ নেমে এসেছি!

shared void p(){print(sum{0,if(exists a=process.arguments[0])if(a!="test")for(c in a)for(b in 0..7)if(c.hash.get(b))1});}

4

পাওয়ারশেল, 273 336 328 324 293 288 295

PARAM($A)[CHAR[]]$A|%{$D=[INT]$_;WHILE($D){$B+=$D-BAND0X1;$D=$D-SHR1}};($B,0)[$A-CEQ"test"]

সম্পাদনা - 'পরীক্ষার' কেসটি ভুলে গেছেন ... এত ব্যয়বহুল।

সম্পাদিত - একটি UPPERCASE সুযোগ মিস করেছে।

সম্পাদিত - মন্তব্য পরামর্শ অন্তর্ভুক্ত (ধন্যবাদ টিম্মিডি)।

4 সম্পাদনা করুন - ডি সি এর তুলনায় সস্তা সস্তা (2 বনাম 3)

সংবেদনশীলতা পরীক্ষার কারণে 5 সম্পাদনা করুন - 295 এ ফিরে যান Back

স্ট্রিং উপর লুপ এবং 1 টি গণনা করে যা ASCII অক্ষর থেকে সরে যায়।

আমাকে বড় হাতের অক্ষর ব্যবহার করার জন্য এবং শেষে অ্যারে সূচকটি ব্যবহার করার জন্য দূরদৃষ্টি দেওয়ার জন্য টিমমিডকে হ্যাট-টিপ।


1
চমৎকার পন্থা! গল্ফগুলির একটি দম্পতি (removed বি সূচনাটি মুছে ফেলবে, কারণ এটি শূন্যের ডিফল্ট হবে, একটি দম্পতি পেরেনকে সরিয়ে দিয়েছে, কিছু সেমিকোলন সরিয়ে দিয়েছে), এটিকে 293 এ নামিয়ে PARAM($A)[CHAR[]]$A|%{$C=[INT]$_;WHILE($C){$B+=$C-BAND0X1;$C=$C-SHR1}};($B,0)[$A-EQ"TEST"]
রেখেছে

আমি যখন "চমৎকার পন্থা" পড়ি তখন এর অর্থ কী? এবং Wii গল্ফ থেকে ভয়েস শুনেছেন? পয়েন্টার জন্য ধন্যবাদ! পাওয়ারশেল কনসোলটিতে এটি পরীক্ষা করার সময় সূচনাটি আমাকে ট্রিপ করছিল এবং আমি এটিকে রেখে দিয়েছিলাম otherwise অন্যথায় জানা ভাল।
চল্লিশ

হ্যাঁ - আপনি যদি কনসোলটি ব্যবহার করছেন তবে এটি বেশিরভাগই একটি REPL পরিবেশ, নির্ধারিত ভেরিয়েবলগুলিতে এক লাইন থেকে পরের লাইনে থাকবে। আপনি যদি এটি একটি .ps1 হিসাবে সংরক্ষণ করেন তবে একই শেল থেকে আপ-তীর-এন্টার টিপলেও এমনকি $ বি (এবং অন্যান্য প্রতিটি পরিবর্তনশীল) পুনরায় আরম্ভ করা হবে। উদাহরণস্বরূপ,PS C:\scripts> .\ecological-footprint.ps1
অ্যাডমবর্কবার্ক

ইনপুটটির জন্য ভুল মান 0 প্রদান করে"TEST"
জ্যাকব কুলরে

1
281PARAM($A)(([CHAR[]]$A|%{$B=$_;0..9|?{[INT]$B-SHR$_-BAND1}}).LENGTH,0)[("TEST"-EQ$A)]
টমক্যান্ডি


4

সি, 374

স্পষ্টতার জন্য নিউলাইনগুলি (স্কোর অন্তর্ভুক্ত নয়) যুক্ত হয়েছে। পরিবর্তনশীল নামগুলি বড়হাতে পরিবর্তিত করে 360 এ উন্নত করা যেতে পারে তবে আমি আরও ভাল কিছু ভাবার চেষ্টা করব।

ইনপুট হ'ল কমান্ডলাইনের মাধ্যমে, যার অর্থ এটি অনুপস্থিত ইনপুটটিতে সিগফল্ট করে। আমি স্টিডিনের মাধ্যমে ইনপুটটির জন্য আরও খারাপ স্কোর আশা করি।

i,t;
main(int c,char**v){
for(;c=v[i][i/8];i++)t+=(c>>i%8)&1;
printf("%d",strcmp(v[1],"test")?t:0);
}

4

পিএইচপি, 377 337 299 পরিবেশগত পদাঙ্ক (এখনও অনেক) , 102 91 বাইট

দেখে মনে হচ্ছে যে পিএইচপি কেবলমাত্র পরীক্ষার মোডে পরিবেশ বান্ধব। ;)

WHILE($D<STRLEN($A=$argv[1]))$B+=SUBSTR_COUNT(DECBIN(ORD($A[$D++])),1);ECHO"test"!=$A?$B:0;

কমান্ড লাইন থেকে চালিত হয়:

php footprint.php hello
php footprint.php test

whileforতারা একই চরিত্রের গণনা ভাগ করে নেওয়ার চেয়ে বেশি পরিবেশ বান্ধব । এছাড়াও বড় হাতের অক্ষরগুলির নামগুলি তাদের ছোট হাতের অংশগুলির তুলনায় আরও ভাল পদচিহ্ন থাকে।

সম্পাদন করা

  • বড় হাতের অক্ষর ব্যবহার করে 40 পয়েন্ট সংরক্ষণ করা হয়েছে।
  • decbinপরিবর্তে ব্যবহার করে 38 পয়েন্ট সংরক্ষণ করাbase_convert

1
এখানে @Adam একটি হল নোটিশ সম্পর্কে আলোচনা এখানে এবং পিএইচপি ওপেনিং ট্যাগ সম্পর্কে । আশা করি এটি আপনার জন্য কার্যকর।
সন্নিবেশকারী নামটি

4

ভিবিএ, 475 418

57 পয়েন্ট বন্ধ জ্যাকব ধন্যবাদ

  • স্ট্রিংকে বাইট অ্যারে রূপান্তরিত করে (128 "ইউনিকোড থেকে স্ট্রিংটিকে সিস্টেমের ডিফল্ট কোড পৃষ্ঠাতে রূপান্তরিত করে" সুতরাং ম্যাকের জন্য কাজ করবে না ....)

  • লুপ যদিও বাইট অ্যারে বাইনারি রূপান্তরিত এবং একসাথে সবকিছু কনক্যাটেনেট।

  • পরীক্ষার জন্য চেক
  • সমস্ত 0 এর সাথে স্ট্রিংয়ের দৈর্ঘ্য মুদ্রণ করে কিছুই দিয়ে প্রতিস্থাপন করা হয়নি

ভিবিএ তুমি কেন গল্ফ করতে এত খারাপ ... :(

SUB A(D)
DIM B() AS BYTE
B=STRCONV(D,128)
FOR P=0 TO UBOUND(B)
H=H+APPLICATION.DEC2BIN(B(P))
NEXT
IF D="test" THEN H=0
MSGBOX LEN(REPLACE(H,0,""))
ENDSUB

4
ভিবিএ কেস-সংবেদনশীল, সুতরাং আপনার প্রতি ছোট হাতের অক্ষর সংরক্ষণ করার জন্য সর্বত্র বড় হাতের ব্যবহার করা উচিত! ( "test"অবশ্যই ব্যতীত )
জ্যাকব কলরেট


3

পাইথ, 64

?qz"test"0l`sS.Bz

ইনপুটটি পরীক্ষা করা হয় কিনা এবং না তা পরীক্ষা করে ইনপুটটির বাইনারি উপস্থাপনায় 1 এর সংখ্যা গণনা করে।


3

হাস্কেল, 292

a 0=0
a b=rem b 2+a(div b 2)
b"test"=0
b d=sum$map(a.fromEnum)d
main=interact$show.b

এখানে বেশি কিছু বলার নেই: প্রতিটি চরিত্রকে ascii মান ( fromEnum) রূপান্তর করুন এবং 1এর (মাধ্যমে a) গণনা করুন । সমস্ত ফলাফল যোগ করুন।


3

জাভাস্ক্রিপ্ট (ES6), 521 478 458 449 473 465

alert(((A=prompt(),A!="test")&&(A!=""))?(A.split``.map(H=>(H.charCodeAt().toString(2).match(/1/g)||[]).length)).reduce((A,B)=>A+B):0)

এটি একটি জাভাস্ক্রিপ্ট গল্ফের আমার প্রথম প্রয়াস, সুতরাং এটি সম্ভবত খুব অবারিত।


এটি সাধারণত সম্মত হয় যে জাভাস্ক্রিপ্ট গল্ফকে অন্তর্ভুক্ত ব্যতীত অন্য কোনও ফর্মের আউটপুট প্রয়োজন needs এটি একটি সতর্কতা, ডকুমেন্ট.ওরাইট বা কোনও ফাংশন রিটার্ন হতে পারে।
Mwr247

আপনি আপনার প্রম্পট অ্যাসাইনমেন্টটি কয়েকটি 'বাইটস' বাঁচাতে ইফ স্টেটমেন্টের প্রথম 'গুলি'তে স্থানান্তর করতে পারেন parent আপনি চারকোডএটে '0' অপসারণ করতে পারেন। এছাড়াও, আপনি যে একটি বড় সঞ্চয় করতে পারেন তা হল যদি / অন্য বিবৃতি =) এর পরিবর্তে
টের্নারি অপারেটরটি ব্যবহার করা হয়

অনেক ধন্যবাদ! প্রম্পট অ্যাসাইনমেন্টের জন্য আমি প্রথম বন্ধকের পরিবর্তে কমা ব্যবহার করে শেষ করেছি; এটি অন্য একটি বাইট সংরক্ষণ করে। (: @ Mwr247
জ্যাচ গেটস

s.split ('') এর পরিবর্তে s.split`` হতে পারে, 2 বাইট সংরক্ষণ করে
ডেনড্রোবিয়াম

1
প্রতি ডেনড্রোবিয়ামের মন্তব্য উপরে @ জ্যাকবক্রল
জ্যাচ গেটস

3

রুবি, 316 313

খুব সোজা, আরও কিছু গল্ফ সম্ভাবনার সন্ধান:

b=gets.chomp;b=='test'?0:b.chars.map{|i|i.ord.to_s(2).count('1')}.inject(:+)
  • ব্যবহৃত bপরিবর্তে x3 পয়েন্ট সংরক্ষণ করুন।

আপনি এর $*[0]পরিবর্তে gets.chomp(কমান্ড লাইন আর্গুমেন্ট হিসাবে ইনপুট নেয়) ব্যবহার করতে পারেন
Mhmd

ডাবল উদ্ধৃতি " 00100010একক উদ্ধৃতির চেয়ে পরিবেশবান্ধব ' 00100111
জ্যাকব ক্রোল

বড় হাতের অক্ষরগুলির তুলনায় বড় হাতের অক্ষরগুলি পরিবেশের পক্ষেও কম। একই কারণে Hচেয়ে ভাল I
জ্যাকব কোরালে

3

পাইথন 2, 294 281 269 266

A=input()
print sum(format(ord(H),"b").count("1")for H in A)if A!="test"else 0

উপরে আমার পাইথ উত্তরের একটি বন্দর।

ইনপুটটি স্ট্রিং হিসাবে পাওয়া যায় (উদ্ধৃতি সহ):

"ABC"

1
ডাবল উদ্ধৃতি " 00100010একক উদ্ধৃতির চেয়ে পরিবেশবান্ধব ' 00100111
জ্যাকব কোরালে

বেশ কয়েকটি মৌলিক পরিবর্তন এটিকে A=input();print[sum(bin(ord(H)).count("1")for H in A),0][A=="test"]243 এর স্কোর দিয়ে নামিয়ে দেয়
কেড


2

পাইথ, 96

Iqz"test"0.q)/j""m.BdmCdz\1

উপরে / নীচে আমার সিজেএম উত্তরের একটি বন্দর।


কিছু পাইথ জেনারেল নোটগুলি: পরিবর্তে টের্নারিটি Iব্যবহার করার চেষ্টা করুন ?, তবে এই ক্ষেত্রে এটি যেহেতু আপনি কেবলমাত্র ব্যবহার করতে পারেন *( nপরিবর্তে স্যুইচ করার পরে q) kস্বয়ংক্রিয়ভাবে ""এবং sস্ট্রিংগুলিতে একই হয় jk। আশা করি আপনি অজানা শেখার মজা পাবেন! :)
FryAmTheEggman

এটি আমার প্রথম পাইথ উত্তর ছিল: পি এটি পাওয়া যথেষ্ট ছিল, হাহাহা, মজাদার। টিপস জন্য ধন্যবাদ! @ ফ্রাইআম দ্য এজিগম্যান
জ্যাচ গেটস

2

সিজেম, 83 81 79 77

বেশ কয়েকটি ভিন্নতার চেষ্টা করার পরে এখনও সেরা:

l0$"test"=!\:i2fbe_1b*

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

ব্যাখ্যা:

l       Get input. Other options like q and r are the same number of bits.
0$      Copy input for comparison. This saves 2 bits over _.
"test"  Push special case string.
=       Compare.
!       Negate so that we have 0 for special case, 1 for normal case.
\       Swap input string to top.
:i      Convert characters to integers.
2fb     Apply conversion to base 2 to all values.
e_      Flatten array.
1b      Sum up the bits. This is 2 bits shorter than :+.
*       Multiply with result from special case test.

2

রুবি, 247

ইনপুটটির সমস্ত বাইট এবং প্রতিটি বাইটের সমস্ত বিট দিয়ে ভেরিয়েবলের যোগফলের মধ্য দিয়ে সোজাসুজি পদ্ধতির লুপিং d

d-2 এ আরম্ভ করা হয়েছে কারণ hইনপুট (2 বিটের মূল্য) থেকে টার্মিনেটিং নিউলাইন রয়েছে এবং আমরা এটি গণনা করতে চাই না।

একইভাবে hউপস্থিত থাকবে testএকটি trailing রাখুন NEWLINE, তাই একটি newline আবশ্যক তুলনা মান অন্তর্ভুক্ত করা হয়েছে।

d=-2
h=gets
h.bytes{|a|8.times{|b|d+=a>>b&1}}
p h=='test
'?0:d

2

আর, 279

sum(as.integer(rawToBits(charToRaw(if((s=readline())=='test')''else s))))

খুব স্ব স্ব বর্ণনাকারী।
পরীক্ষা:

> sum(as.integer(rawToBits(charToRaw(if((s=readline())=='test')''else s))))
sum(as.integer(rawToBits(charToRaw(if((s=readline())=='test')''else s))))
[1] 279
> sum(as.integer(rawToBits(charToRaw(if((s=readline())=='test')''else s))))
A
[1] 2
> sum(as.integer(rawToBits(charToRaw(if((s=readline())=='test')''else s))))
O
[1] 5
> sum(as.integer(rawToBits(charToRaw(if((s=readline())=='test')''else s))))
test
[1] 0
> sum(as.integer(rawToBits(charToRaw(if((s=readline())=='test')''else s))))
OAO
[1] 12

2

সি, 378 পদচিহ্ন, 98 বাইট

আর একটি সি সমাধান:

s;main(c,a)char**a;{for(s=-17*!strcmp(a[1],"test");c=*a[1]++;)for(;c;s+=c&1,c/=2);printf("%d",s);}

যেভাবে এটি কাজ করে তা হ'ল সাধারণত 0 থেকে আরম্ভ করা হয়, তবে -17 হয়ে যায় যদি কমান্ড-লাইন আর্গুমেন্টটি "পরীক্ষা" হয় (strcmp সমান স্ট্রিংয়ে 0 দেয়, এবং স্বতন্ত্র স্ট্রিংগুলিতে শূন্য নয়, সুতরাং উল্টানো যদি স্ট্রিংকে 1 দেয় "পরীক্ষা")। 17-এর সংখ্যাটি 17 টির পদাঙ্কের জন্য ক্ষতিপূরণ হিসাবে বেছে নেওয়া হয়েছিল যা "পরীক্ষার" জন্য গণনা করা হবে। পায়ের ছাপের গণনা বিটওয়াইজ অপারেটরগুলির সাথে সহজ।

স্ন্যাপ! আমি প্রথমে "সংক্ষিপ্ততম পদচিহ্ন জয়" মিস করলাম তাই আমি সংক্ষিপ্ততম কোডের জন্য লক্ষ্য রেখেছিলাম ... আমি "পায়ের ছাপ" আরও ছোট করতে পারি কিনা তা আমি দেখতে পাচ্ছি।


2

জাভা, 594

class A{public static void main(String[]P){Integer D,H;for(D=H=0;D<P[0].length();)H+=D.bitCount(P[0].charAt(D++));System.out.print(P[0].equals("test")?0:H);}}

জাভা খুব সবুজ নয়।

অবরুদ্ধ সংস্করণ:

class A {
    public static void main(String[]P) {
        Integer D,H;
        for(D=H=0;D<P[0].length();)
            H+=D.bitCount(P[0].charAt(D++));
        System.out.print(P[0].equals("test")?0:H);
    }
}

Dহিসাবে ঘোষণা করা হয় Integerযাতে আমরা পরিবেশগতভাবে বিবেকবান পদ্ধতিতে Integerস্ট্যাটিক bitCountপদ্ধতিটি অ্যাক্সেস করতে পারি । bitCountপদ্ধতি একইরূপে charপূর্ণসংখ্যার যেমন s এবং সেট বিট সংখ্যার উল্লেখ করে।


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