স্বাক্ষরযুক্ত 16-বিট পূর্ণসংখ্যায় যেকোনটির সংখ্যা গণনা করুন


24

কিছু বিবৃতি (গুলি) লিখুন যা স্বাক্ষরবিহীন ষোল-বিট পূর্ণসংখ্যার মধ্যে তার সংখ্যা গণনা করবে।

উদাহরণস্বরূপ, যদি ইনপুট হয় 1337, তবে ফলাফলটি 6কারণ 1337ষোল বিট বাইনারি সংখ্যাটি রয়েছে 0000010100111001, এতে ছয়টি রয়েছে।


2
টিপ: সংখ্যা mod ঠিক যেমন একটি সংখ্যা সংখ্যার কিছু সংখ্যা গেলিক ভাষার 9 সর্বসম হয়, বিট কিছু সমকক্ষ স্থীর 1.
PyRulez

8
@ পাইরুলেজ যে কোনও সংখ্যা শূন্য মডুলো ১ 1.
থমাস

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

4
@ থমাস আমি কখনও বলিনি যে এটি একটি সহায়ক টিপ was
পাইরুলেজ

2
বেশিরভাগ উত্তর পোস্ট করার পরে কেন এই প্রশ্নটি নিকট ভোট আকর্ষণ করছে? বন্ধ ভোটাররা মন্তব্যগুলিতে আপনার কারণটি উল্লেখ করুন। যদি এটি es1024 এর (খুব চতুর) 4-বাইট উত্তরের গ্রহণযোগ্যতা হয় যা মানক ছিদ্রগুলির সাথে সম্মতি দেয় না (কারণ এটি বিল্টিন ব্যবহার করে) দয়া করে জানান যে এটি কারণ is নাহলে কী?
স্তর নদী সেন্ট

উত্তর:


37

80386 মেশিন কোড, 4 বাইট

F3 0F B8 C1

যা পূর্ণসংখ্যাকে নিয়ে যায় cxএবং গণনাটিকে আউটপুট করে axএবং এর সমতুল্য:

popcnt ax, cx     ; F3 0F B8 C1

এবং এখানে একটি 11 10 বাইট সমাধান রয়েছে যা পিওপিসিএনটি ব্যবহার করছে না:

31 C0 D1 E9 10 E0 85 C9 75 F8

যা এর সমান:

xor ax, ax        ; 31 C0   Set ax to 0
shr cx, 1         ; D1 E9   Shift cx to the right by 1 (cx >> 1)
adc al, ah        ; 10 E0   al += (ah = 0) + (cf = rightmost bit before shifting)
test cx, cx       ; 85 C9   Check if cx == 0
jnz $-6           ; 75 F8   Jump up to shr cx, 1 if not

এটি কি 32-বিট বা 16-বিট (হয় প্রকৃত বা সুরক্ষিত) মোডে?
FUZxxl

2
@FUZxxl দ্য সমাবেশ প্রদত্ত যদিও প্রতিস্থাপন, 16-বিট জন্য axএবং cxসঙ্গে eaxএবং ecx32 বিট থেকে এটি পরিবর্তন। বাইটকোড উভয়ের জন্য একই।
es1024

1
@ es1024 বাইট কোডটি একই হয় যদি এটি 16-বিট মোডে এবং 32-বিট মোডে 32-বিট সংস্করণে সংকলিত হয়।
কোল জনসন

2
পপকেন্ট কি অন্তর্নির্মিত নয় এবং এইভাবে স্ট্যান্ডার্ড ফাঁকফুলগুলিতে পড়ে? এখনও দ্বিতীয় সমাধানের জন্য কৃতিত্ব যদিও।
অ্যালকিমিস্ট

5
আপনি যখন মেশিন কোডটির দৈর্ঘ্য দাবি করেন , শিরোনামটি "80386 মেশিন কোড" হওয়া উচিত নয়, "80386 এসেমব্লার" নয়?
কেভিন রেড

14

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

bin(s).count('1')

binবিল্ট-ইন আয় পূর্ণসংখ্যা একটি বাইনারি স্ট্রিং রূপান্তর। তারপরে আমরা 1অঙ্কগুলি গণনা করি :

>>> s=1337
>>> bin(s)
'0b10100111001'
>>> bin(s).count('1')
6

11

জে (5 টি অক্ষর)

জে এর স্পষ্ট কোন প্রকার নেই। এটি সমস্ত পূর্ণসংখ্যার জন্য সঠিক কাজ করে।

+/@#:
  • +/ যোগফল
  • @ এর
  • #: বেস দুটি প্রতিনিধিত্ব

11

সি, 21

for(n=0;x;n++)x&=x-1;

আপনি বলেছিলেন "কিছু বিবৃতি লিখুন" ("একটি ফাংশন" নয়) তাই আমি ধরে নিয়েছি যে নম্বরটি সরবরাহ করা হয়েছে xএবং 1 এর সংখ্যাটি ফিরে আসবে n। যদি আমাকে আরম্ভ করতে না হয় তবে nআমি 3 বাইট সংরক্ষণ করতে পারি।

এটি x&x-1পরীক্ষার জন্য বিখ্যাত অভিব্যক্তির একটি অভিযোজন যা যদি 2 টির শক্তি হয় (এটি যদি সত্য হয় তবে তা সত্য নয়))

এখানে এটি প্রশ্ন থেকে ১৩37 the নম্বরে কর্মরত রয়েছে। নোট করুন যে 1 টি বিয়োগ করা কমপক্ষে উল্লেখযোগ্য 1 বিট এবং সমস্ত জিরো ডানদিকে ফ্লিপ করে।

0000010100111001 & 0000010100111000 = 0000010100111000
0000010100111000 & 0000010100110111 = 0000010100110000
0000010100110000 & 0000010100101111 = 0000010100100000
0000010100100000 & 0000010100011111 = 0000010100000000
0000010100000000 & 0000010011111111 = 0000010000000000
0000010000000000 & 0000001111111111 = 0000000000000000

সম্পাদনা: সম্পূর্ণতার জন্য, এখানে নিখুঁত অ্যালগরিদম, যা এক বাইট দীর্ঘ (এবং বেশ খানিকটা ধীর গতির))

for(n=0;x;x/=2)n+=x&1;


1
@ edc65 যাতে এটি দেখা যাচ্ছে, আমি হুইলটি নতুন করে এনেছি। কমপক্ষে আমি বাদ দিয়ে 2 বাইট সংরক্ষণ করেছি {}। এটি এত সহজ একটি কাজ যা আমি ইতিমধ্যে এটি নিয়ে এসেছি অবাক হওয়ার দরকার নেই should
স্তরের নদী সেন্ট

"প্রথম 1960 সালে প্রকাশিত" , চিত্তাকর্ষক।
mbomb007

নিষ্পাপ অ্যালগরিদমের সংশোধন:for(n=0;x;x/=2)n+=x&1;
হেলিওস

1
@nmxprime ওপি স্বাক্ষরযুক্ত স্বাক্ষরের জন্য জিজ্ঞাসা করছে। -32 = 11111111 11111111 11111111 11111001 আমার 32 বিট সংকলকটিতে, আমি দ্রুত অ্যালগরিদমের জন্য 30 পাই, যা সঠিক। নিষ্পাপ অ্যালগরিদমের জন্য, এটি -7, -7 / 2 = -3, -3 / 2 = -1, -1 / 2 = 0 এর মাধ্যমে পুনরাবৃত্তি করে। এটি একটি ভুল উত্তর দেয়। X / = 2 থেকে x >> = 1 পরিবর্তন করা কিছু সংকলকগুলির সঠিক উত্তর দিতে পারে, তবে সি 1 বা 0 টি খালি বিটটিতে >> নেতিবাচক সংখ্যায় স্থানান্তরিত হয়েছে কিনা সে সম্পর্কে সি অপরিজ্ঞাত। যে সংকলকগুলি 1 এ স্থানান্তরিত হবে তারা অনন্ত লুপে যাবে। কাজটি হ'ল এক্সকে স্বাক্ষরবিহীন ইন্ট হিসাবে সংজ্ঞায়িত করা। তারপরে x = -7 টি লোড (1 << 32) -7 = 4294967289 x এ।
স্তর নদী সেন্ট

5

জেলি , অ-প্রতিযোগিতামূলক

এই উত্তরটি প্রতিদ্বন্দ্বিতামূলক নয়, যেহেতু চ্যালেঞ্জ পোস্ট হওয়ার পরে ভাষাটি তৈরি করা হয়েছিল।

2 বাইট:

BS

জেলি হ'ল জেনার মতো সিনট্যাক্স সহ @ ডেনিস রচিত একটি নতুন ভাষা।

         implicit: function of command-line arguments
B        Binary digits as list
 S       Sum

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


4

পাইথ, 4 বাইট

sjQ2

প্রোগ্রামটি STDIN- এ যার হামার ওজন খুঁজে পাওয়া যাবে সেই সংখ্যাটি গ্রহণ করে।


4

জুলিয়া, 29 27 19 বাইট

n->sum(digits(n,2))

এটি একটি অনামী ফাংশন তৈরি করে যা একটি একক যুক্তি গ্রহণ করে n,। এটি ব্যবহার করতে, এটিকে এমন কিছুতে নির্ধারণ করুন f=n->...এবং এটিকে কল করুন f(1337)

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


এটি অনেক সংক্ষিপ্ত হতে পারে: জুলিয়ার একটি ফাংশন রয়েছেcount_ones
অ্যান্ড্রু বলেছেন

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


3

জো , 4 বাইট

/+Ba

এটি একটি বেনামে ফাংশন। Baএকটি সংখ্যার বাইনারি উপস্থাপনা দেয় এবং এর /+যোগফল দেয়।

   (/+Ba)13
3
   (/+Ba)500
6

3

আর, 24 বাইট

sum(intToBits(scan())>0)

scan() স্টিডিন থেকে ইনপুট পড়ে।

intToBits()একটি পূর্ণসংখ্যা নিয়ে যায় এবং ইনপুটটির rawবাইনারি উপস্থাপনের শূন্য এবং এরগুলিকে ধারণ করে এমন একটি ভেক্টর প্রদান করে।

intToBits(scan())>0লজিকাল ভেক্টরটি প্রদান করে যেখানে প্রতিটি TRUEবাইনারি ভেক্টর উপাদান যদি 1 হয় (যেহেতু সমস্ত উপাদান 0 বা 1 এবং 1> 0) অন্যথায় হয় FALSE

আর-তে, আপনি সংখ্যা পেতে একটি লজিকাল ভেক্টর যোগ করতে পারেন TRUE উপাদানগুলির , সুতরাং উপরের হিসাবে আমরা কী চাই gets

নোট করুন যে সরাসরি ইনপুট sum()হ্যান্ডেল করতে পারে না raw, সুতরাং লজিক্যালগুলি ব্যবহার করে কার্যকরী হয়।


করবে না sum(intToBits(scan()))একই হতে?
seequ

@ সিয়েগ: দুর্ভাগ্যক্রমে যেহেতু কোনও sum()ধরণের ইনপুট নিতে পারছে না raw, যা এটাই ফিরে এসেছে intToBits()
অ্যালেক্স এ।

এটা আমার কাছে সত্যিই অদ্ভুত।
seequ

1
@ সিগ: হ্যাঁ, এটা আমার কাছেও অদ্ভুত। আচ্ছা ভালো. প্রতিটি পোর্কচপ যদি নিখুঁত হয় তবে আমাদের কাছে হটডগ নেই।
অ্যালেক্স এ।

আর এটাই আজবতম রূপক।
20


3

চতুর্থ, 48 49 বাইট

: c ?dup if dup 1- and recurse 1+ then ;
0 1337 c

যদি একটি আসল ফাংশন প্রয়োজন হয় তবে দ্বিতীয় লাইন হয়ে যায়

: c 0 swap c ;

এবং আপনি এটি "1337 সি" দ্বারা কল করেন। ফোর্থের তুলনামূলক ভার্বোজ কন্ট্রোল শব্দগুলি এটিকে শক্ত করে তোলে (আসলে তারা এগুলি অনেক শক্ত করে তোলে)।

সম্পাদনা করুন: আমার আগের সংস্করণটি নেতিবাচক সংখ্যাগুলি সঠিকভাবে পরিচালনা করে নি।



3

ES6 (34 22 21 বাইট):

এটি একটি সাধারণ পুনরাবৃত্তির কাজ যা আরও কিছুটা ছোট করা যায়। এটি কেবল কিছুটা সময় নেয় এবং আবার নিজেকে চালায়:

B=n=>n&&(1&n)+B(n>>1)

এটি ব্যবহার করে দেখুন http://www.es6fiddle.net/imt5ilve/ (আপনার যা দরকার varকারণ 'use strict';)।

আমি বিশ্বাস করতে পারি না যে আমি মাছকে পরাজিত করেছি !!!

পুরানোটি:

n=>n.toString(2).split(1).length-1

ইএস 5 (39 বাইট):

উভয় ফাংশন সহজেই ES5- এ অভিযোজিত হতে পারে:

function B(n){return n?(1&n)+B(n>>1):0}

//ungolfed:

function B(number)
{
    if( number > 0 )
    {
        //arguments.callee points to the function itself
        return (number & 1) + arguments.callee( number >> 1 );
    }
    else
    {
        return 0;
    }
}

পুরোনো একটি:

function(n){return n.toString(2).split(1).length-1}

@ user1455003 আমাকে একটি দুর্দান্ত ধারণা দিয়েছে, যা সবচেয়ে ছোটটিকে 'ট্রিগার' করেছে:

function B(n,x){for(x=0;n;n>>=1)x+=n&1;return x}

আমি এটিকে ES6 এর সাথে খাপ খাইয়ে এনেছি এবং এটিকে অনেক ছোট করার জন্য পুনরাবৃত্ত করে তুলছি!


1
এখানে একটি ছোট 'রেগুয়ার' জাভাস্ক্রিপ্ট ফাংশন। ফাংশন বি (এন, এক্স) function এর জন্য (x = 0; এন; এন >> = 1) এক্স + = এন & 1; এক্স x
return

@ user1455003 আপনাকে অনেক ধন্যবাদ বা আপনার পরামর্শ! আমি এটি ব্যবহার করেছি এবং এটি ES6 এর সাথে মানিয়ে নিয়েছি এবং অনেকগুলি সংক্ষিপ্ত করেছি। ধন্যবাদ!
ইসমাইল মিগুয়েল

আপনাকে স্বাগতম! আপনি এটি দিয়ে যা করেছেন তা আমি পছন্দ করি। পুনরাবৃত্তির সাথে নিয়মিত জাভাস্ক্রিপ্টটি 39 এ নেমে গেছে! ফাংশন বি (এন) {রিটার্ন এন? (1 & n) + বি (এন >> 1): 0}
ওল্ফহ্যামার

@ user1455003 আপনি চাইলে আপনি ES5 অংশটি সম্পাদনা করতে পারেন এবং গল্ফ সংস্করণে বাইট গণনা যোগ করতে পারেন। (আমি মনে করি আপনি সম্পাদনা দিয়ে খ্যাতি অর্জন করেছেন)।
ইসমাইল মিগুয়েল

@ ব্যবহারকারী81655 ওয়াও! এটি কাজ করে !!! আপনাকে অনেক ধন্যবাদ! আমি সত্যিই জানতাম এটি আরও খাটো করা যায়
ইসমাইল মিগুয়েল

2

> <> (ফিশ) , 24 বাইট + 2 = 26

0$11.>~n;
2,:?!^:2%:{+}-

প্রোগ্রামটি কেবল পুনরাবৃত্তি মোড 2 করে, বিয়োগ করে বিভাজন এবং ভাগ করে দেয় যতক্ষণ না ইনপুট সংখ্যাটি শূন্য হয়, তারপরে মোড 2 এর যোগফল মুদ্রণ করে।

-vপতাকা সহ পরীক্ষা করুন , যেমন

py -3 fish.py ones.fish -v 1337

16 বিট পূর্ণসংখ্যার জন্য কোডপয়েন্ট ইনপুট সম্ভবত পর্যাপ্ত নয়। ( -vপতাকা সংস্করণটি এখনও কাজ করে))
এলোমেলোভাবে

@ আরন্দোমরা অভিশাপ, আপনি ঠিক বলেছেন ইউনিকোড ইনপুট কাজ করার সময়, 16-বিট মাত্রার কিছু মাত্রার বাইরে সীমার বাইরে ...
Sp3000

2

পিএইচপি (38 বাইট):

এটি আমার ES6 উত্তরের মতো একই অ্যাপ্রোচ ব্যবহার করে

<?=count(split(1,decbin($_GET[n])))-1;

এটি একটি সম্পূর্ণ কোড, আপনার কেবল এটি একটি ফাইলে রাখতে হবে এবং প্যারামিটার সহ এটি ব্রাউজারে অ্যাক্সেস করতে হবে n=<number>

পিএইচপি <4.2 (32 বাইট):

এটি একটু খাটো:

<?=count(split(1,decbin($n)))-1;

এটি কেবলমাত্র পিএইচপি <4.2 এ নির্ভরযোগ্যভাবে কাজ করে কারণ নির্দেশটি PHP4.2 থেকে পিএইচপি 5.4 পর্যন্ত পূর্বনির্ধারিতভাবে register_globalsসেট করা Offহয়েছিল (যা ততক্ষণে সরানো হয়েছিল)।

আপনি যদি একটি php.iniফাইল তৈরি করেনregister_globals=On তবে এটি কাজ করবে।

কোডটি ব্যবহার করতে, পোষ্ট বা জিইটি হয় না দিয়ে একটি ব্রাউজার ব্যবহার করে ফাইলটি অ্যাক্সেস করুন।

@ ভিনিসিয়াস মন্টেরো'র পরামর্শ (38/45 বাইট):

তিনি কার্যত খুব আকর্ষণীয় ব্যবহার রয়েছে এমন দুটি সত্যিই ভাল পরামর্শ দিয়েছেন array_sum:

38 বাইট:

<?=array_sum(str_split(decbin(1337)));

45 বাইট:

<?=array_sum(preg_split('//', decbin(1337)));

এটি সত্যিই দুর্দান্ত ধারণা এবং 36 বাইট দীর্ঘ হতে আরও কিছুটা ছোট করা যেতে পারে:

<?=array_sum(split(1,decbin(1337)));

2
অথবা আপনি প্রতিধ্বনি অ্যারে_সুম (str_split (ডেকবিন (1337)) ব্যবহার করতে পারেন; এবং আপনি খুব প্রতিধ্বনি অ্যারে_সুম (প্রিগ_স্প্লিট ('//', ডেকবিন (1337))) ব্যবহার করতে পারেন;
ভিনিসিয়াস মন্টিওরো

1
@ ভিনিসিয়াস মন্টেরো আপনার পরামর্শের জন্য আপনাকে অনেক ধন্যবাদ আমি সত্যিই এটি পছন্দ! আমি এটি উত্তরে যুক্ত করেছি।
ইসমাইল মিগুয়েল

<?=substr_count(decbin(1337),"1");(34 বাইট) ব্যবহার করে চারটি বাইট অর্জন করুন
কোজিচেরো

1
@Cogicero আর তুমি কোট সরিয়ে আরও বেশি সংরক্ষণ করতে পারেন: <?=substr_count(decbin(1337),1);। এটি মোট 32 বাইট। এটি একটি আলাদা যথেষ্ট কোড হিসাবে বিবেচনা করে, আপনি কি এটি নিজের উত্তর হিসাবে পোস্ট করতে চান না? আমি অবশ্যই এটি upvote হবে!
ইসমাইল মিগুয়েল

@ পজিটরিও যদি আপনি প্যারামিট্রাইজেশন ব্যবহার করেন তবে এটি কেবলমাত্র দুটি বাইট সংক্ষিপ্ত: <?=substr_count(decbin($argv[1]),1);(বা $_GET[n]; 36 বাইট)
টাইটাস


2

জাপট, 3 বাইট (অপ্রতিযোগিতামূলক)

¢¬x

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


মানুষ, আমি কখনই কোনও কারণে কোনও তারিখ দেখি না।
মামা ফান রোল

1
হা হা, জাপট সবচেয়ে কম: ডি বিটিডাব্লু, ¢o1 lপাশাপাশি কাজ করবে। আর একটি আকর্ষণীয় পদ্ধতির হ'ল -¢¬r-0; ¢¬বাইনারি অঙ্কের অ্যারেতে বিভক্ত হয়, r-00 থেকে শুরু করে বিয়োগ দ্বারা হ্রাস পায় এবং -ফলাফলটিকে ইতিবাচক করে তোলে।
ETH প্রোডাকশনগুলি

গত রাতে হিসাবে, আপনি এখন ব্যবহার করতে পারেন ¢¬x
ইটিএইচ প্রোডাকশনস

2

মোম ,31 27 বাইট

অ-প্রতিযোগিতামূলক উত্তর। মোম এই চ্যালেঞ্জের চেয়ে নতুন।

এই সমাধানটি "বিট টুইডলিং হ্যাকস" ওয়েবসাইট থেকে সেট বিট গণনা করার জন্য ব্রায়ান খেরিগানের পদ্ধতি ব্যবহার করে।

এটি কেবল একটি লুপের মধ্য দিয়ে চলে, বিট কাউন্টটি বৃদ্ধি করে, যতক্ষণ number=number&(number-1)না পর্যন্ত পুনরাবৃত্তি করে number = 0। বিটস সেট থাকায় সমাধানটি কেবল লুপের মধ্য দিয়ে যায়।

আমি কয়েকটি নির্দেশ পুনরায় সাজিয়ে 4 বাইট শেভ করতে পারি। উভয় উত্স কোড এবং ব্যাখ্যা আপডেট হয়েছে:

pT_
>"p~0+M~p
d~0~@P@&<
{@<

ব্যাখ্যা:

pT_            generate IP, input Integer, redirect
>"             if top lstack value > 0 jump next instruction,
               otherwise continue at next instruction
  p            redirect if top lstack value=0 (see below)
   ~           flip top and 2nd lstack values
    0+         set top lstack value to 0, set top=top+2nd
      M        decrement top lstack value
       ~       flip top and 2nd lstack values
        p      redirect to lower left
        <      redirect to left
       &       top=top&2nd
      @        flip top and 3rd lstack values
    @P         increment top lstack value, flip top and 3rd values
 ~0~           flip top and 2nd values, set top=0, flip top and 2nd again
d              redirect to upper left
>"p~0+M.....   loop back

  p            if top lstack = 0 at " instruction (see above), redirect
  0            set lstack top to zero (irrelevant instruction)
  <            redirect to the left
 @             flip top and 3rd lstack values
{              output top lstack value as integer (bitcount)

মোমওয়াক্স দোভাষী, ভাষার বৈশিষ্ট্য এবং উদাহরণগুলি সহ আমার গিটহাবের সংগ্রহস্থলটি ক্লোন করুন ।


1

জাভা, 17 বাইট

কাজ করার জন্য byte, short, char, এবং int। ল্যাম্বদা হিসাবে ব্যবহার করুন।

Integer::bitCount

পরীক্ষা এখানে

বিল্ট-ইনগুলি ব্যবহার না করে:

42 বাইট

s->{int c=0;for(;s!=0;c++)s&=s-1;return c}

পরীক্ষা এখানে


6
এটি একটি স্ট্যান্ডার্ড লুফোল: অন্তর্নির্মিত ফাংশন যা আপনি যা করতে চান ঠিক তা নিষিদ্ধ।
FUZxxl

@FUZxxl ওপি কখনও স্ট্যান্ডার্ড ফাঁক থেকে নিষেধ করে না
কোল জনসন

1
@ কোল জনসন স্ট্যান্ডার্ড
es1024

6
@FUZxxl যদিও es1024 ঠিক আছে যে মানক লুফোলগুলি ডিফল্টরূপে বন্ধ করা হয়, অন্তর্নির্মিত ফাংশনগুলি ব্যবহার করা বর্তমানে +৩৩ / -২ of এর ভোট বিভক্ত হয়ে গৃহীত লুফোল নয়।
মার্টিন ইন্ডার

1

ক্লিপ , 6

2 উপায়:

cb2nx1

এটি প্রয়োজনীয়তার একটি সরল অনুবাদ: সংখ্যার বেস -২ উপস্থাপনের মধ্যে গণনা।

r+`b2n

অন্য একটি পদ্ধতি, যা বেস -২ উপস্থাপনের অঙ্কগুলির যোগফল নিয়ে যায়।


1

অষ্টাভ, 18

sum(dec2bin(s)-48)

উদাহরণ:

octave:1> s=1337
s =  1337
octave:2> sum(dec2bin(s)-48)
ans =  6

1

জিএমএল (গেম মেকার ল্যাঙ্গুয়েজ), 21 বাইট

for(n=0;x;n/=2)n+=x&1



1

পাওয়ারশেল (৫১ বাইট)

"$([char[]][convert]::ToString($s,2)|%{"+$_"})"|iex

ব্যাখ্যা:
[convert]::ToString($s,2)থেকে একটি বাইনারি স্ট্রিং প্রতিনিধিত্ব উত্পাদন করে $s
[char[]]এটিকে একটি চর অ্যারে হিসাবে কাস্ট করে এবং আমাদের প্রতিটি চরকে গণনা করার অনুমতি দেয়।
|%{"+$_"}প্রতিটি অক্ষরকে একটি + চিহ্ন সহ
"$()"নিখুঁতভাবে কল .ToString()করে ফলাফলের উপ এক্সপ্রেশনটি
|iexপাইপযুক্ত স্ট্রিংয়ের যোগফল (যেমন "+ 1 + 0 +1 +1 +0 +1 +0 +0" = 4)


ফোন করেই বলা যায়! আপনার মত একই যুক্তি অনুসরণ করে, কেন ইনলাইন -joinঅপারেটর এবং .ToString()45 টি বাইট সহ 45 টি বাইট অর্জনের জন্য অন্তর্নিহিত ব্যবহার করবেন না [char[]][convert]::ToString($s,2)-join'+'|iex, বা ভিন্ন পদ্ধতির হিসাবে -replace43 বাইট অর্জনের জন্য ইনলাইন অপারেটর ব্যবহার করুন([convert]::ToString($s,2)-replace0).length
অ্যাডমবর্কবার্ক

1

Clojure, 42 বাইট

#(count(filter #{\1}(Long/toString % 2)))

ডান থেকে বামে পড়া, বাইনারি স্ট্রিংয়ে রূপান্তর করুন, অক্ষরের অনুক্রমে রূপান্তর করুন, 1গুলি ফিল্টার করুন এবং আপনার কতগুলি আছে তা গণনা করুন।

সিয়েগের সহায়তায় সম্পাদিত


42: #(count(filter #{\1}(Integer/toString% 2)))
seequ

আপনার আরও একটি চরিত্র দরকার #(count(filter #{\1}(Integer/toString % 2)))
নীল ম্যাসন

না আপনি না। :)
seequ

এটি চেষ্টা করার সময় আমি এটি পেয়েছিলাম: CompilerException java.lang.IllegalArgumentException: No matching method: toString_PERCENT_
নীল ম্যাসন

আমি ট্রায় ক্লোজারে এটি পরীক্ষা করেছি। দৃশ্যত পৃষ্ঠাটি হঠাৎই চিনতে পারে না Integer/toString। এটি যদিও এক সেকেন্ড আগে কাজ করেছে।
seequ

1

হাস্কেল ৪২ টি চর

t 0=[]
t n=t(quot n 2)++[rem n 2]
f=sum.t

f :: Integer -> Integer
ইন্টারেক্টিভ ইন্টারপ্রেটার থেকে ফাংশন ব্যবহার হিসাবে ঘোষণা করে f <number>বা main=print$f <number>ফাইলের শেষে লাইন যুক্ত করে ।


আপনি সরাসরি সংক্ষিপ্ত করে প্রচুর বাইট সংরক্ষণ করতে পারেন rem n 2 গুলি পরিবর্তে এটি একটি তালিকা বিল্ডিং এবং ব্যবহার করে divপরিবর্তে quot: t 0=0 t n=t(div n 2)+rem n 2না - fআর।
নিমি

1

মতলব, 13 বাইট

de2biশূন্যের একটি ভেক্টর তৈরি করে এবং বাইনারি সংখ্যার প্রতিনিধিত্ব করে এবং sumকেবল সমস্ত এন্ট্রিগুলির যোগফল দেয়।

sum(de2bi(n))

1

𝔼𝕊𝕄𝕚𝕟, ৪ টি চর / ১১ বাইট (অ-প্রতিযোগিতামূলক)

⨭⟦ïⓑ

Try it here (Firefox only).

ব্যাখ্যা

ইনপুটটিকে বাইনারিতে রূপান্তর করে, চরগুলি বরাবর বিভক্ত হয় এবং ফলাফল অ্যারে যোগফল যোগ করে।

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