কম হামিং ওজন সহ হামিং ওজন গণনা করুন


19

এমন একটি প্রোগ্রাম তৈরি করুন যা স্ট্রিংয়ের হামিং ওজনকে গণনা করে । বিজয়ী হ'ল সর্বনিম্ন হামিং ওজন সহ প্রোগ্রাম।

নিয়মাবলী:

  • একটি ASCII চরিত্রের জন্য হামিং ওজনকে 1তার বাইনারি উপস্থাপনায় সেট করা বিটের মোট সংখ্যা হিসাবে সংজ্ঞায়িত করা হয় ।
  • ধরুন ইনপুট এনকোডিংটি 7-বিট ASCII, আপনার ভাষার পক্ষে যে কোনও ইনপুট প্রক্রিয়া স্বাভাবিক (যেমন স্টিডিন, আরগস, ইত্যাদি) দিয়ে গেছে passed
  • স্টাডআউট বা আপনার ভাষা যে ডিফল্ট / সাধারণ আউটপুট প্রক্রিয়াটি ব্যবহার করে ফলাফল হিসাবে ফলাফল হিসাবে আউটপুট দিন।
  • এটি বলার অপেক্ষা রাখে না, তবে এটি কার্যকর হওয়ার জন্য আপনাকে বাস্তব জীবনে বাস্তব প্রোগ্রাম চালাতে সক্ষম হতে হবে।
  • বিজয়ী হ'ল এমন সমাধান যা এর কোডটিতে হ্যামিংয়ের ওজন সবচেয়ে কম।
  • দুঃখিত, এটির জন্য সাদা জায়গার কোনও সমাধান নেই ! ঠিক আছে, আপনি এখন শ্বেত স্পেসে কোড করতে পারেন আমি বিধিগুলি বাছাই করেছি :)

প্রতি-চরিত্রের উদাহরণ:

char |  binary  | weight
-----+----------+-------
a    | 01100001 | 3
x    | 01111000 | 4
?    | 00111111 | 6
\x00 | 00000000 | 0
\x7F | 01111111 | 7

যদি আমরা 0x20ASCII 32 কে রেফারেন্স হিসাবে গ্রহণ করি তবে hello world11 এর চেয়ে 10 এর হামিং ওজনটি নয়?
ক্রিশ্চিয়ান লুপাস্কু

hello world11 এর ওজন কেন ? কেবলমাত্র 10 টি অক্ষর একটি স্থানের থেকে পৃথক। এছাড়াও - কোনও প্রোগ্রামের হামিং ওজন শূন্যস্থানগুলি বাদ দিয়ে কেবল এটির দৈর্ঘ্য বলে মনে হচ্ছে। সাধারণ কোড গল্ফ থেকে এতটা আলাদা নয়।
ugoren

দুঃখিত, আমি এটি পুরোপুরি খারাপ করেছি। উইকিপিডিয়ায় হামহীন ওজন নিবন্ধটি বরং বিভ্রান্তিকর, এবং আমি নিয়মগুলি পুরোপুরি fubar'ed করেছি। এখনই আবার লেখার। আপডেট: ঠিক আছে, এএসসিআইআই স্ট্রিংয়ের বিট সংখ্যা 1 হিসাবে সেট করা হিসাবে এটি সংজ্ঞায়িত করতে পুনরায় লিখিত, স্ক্রু-আপের জন্য দুঃখিত।
বহুপদী

@ugoren নিম্ন-মানের ASCII অক্ষরযুক্ত একটি সমাধানের হ্যামিং ওজন কম।
বহুবর্ষীয়

1
এখন এটি সমস্ত জ্ঞান করে তোলে। ব্যবহার করুন, ~এবং সতর্কতা অবলম্বন করুন o
ugoren

উত্তর:


6

জে (33)

এক 34 এর চেয়ে কম!

+/,#:3 u:

প্রচন্ডভাবে অনুপ্রাণিত দ্বারা এই উত্তর , কিন্তু এক একটি hamming ওজন কমে।

   +/,#:3 u:'+/,#:3 u:'
33

8

জে, ওজন 34

+/,#:a.i.

ব্যবহার - স্ট্রিংটি পরিমাপের শেষে উদ্ধৃতিতে রাখুন:

   +/,#:a.i.'+/,#:a.i.'
34

বিকল্পভাবে, কীবোর্ড থেকে ইনপুট নেওয়া (ওজন 54):

   +/,#:a.i.1!:1[1
hello
21

এটি লেখার একমাত্র উপায় আছে :)
12:42

নেই ... আমি এমন একটি সমাধান পেয়েছি যার একটি হ্যামিং ওজন কম রয়েছে।
Junuʎs

বাজকিল হওয়ার চেষ্টা করছেন না, তবে নিয়মগুলি কোনও খণ্ড নয় , একটি প্রোগ্রামের জন্য জিজ্ঞাসা করে ।
FUZxxl

5

জে , 39

+/,#:a.i:]

এটি একটি যুক্তি গ্রহণ একটি ফাংশন। (অথবা ]স্ট্রিংটি সরাসরি প্রতিস্থাপন করুন ; গ্যারেথ নোট হিসাবে এটি ব্যয়কে 34 এ নামিয়ে আনে।)

   + /, #: এআই:] 'হ্যালো ওয়ার্ল্ড'
45
   + /, #: আইআই:] '+ /, #: আইআই:]'
39

বিখ্যাত মন সর্বদাই অন্যরকম চিন্তা করে. :-)
গ্যারেথ


5

QBasic, 322 311 286 264

H$=COMMAND$
FOR A=1 TO LEN(H$)
B=ASC(MID$(H$,A,1))
WHILE B>0
D=D+B MOD 2
B=B\2
WEND
NEXT
?D

কাজের জন্য সঠিক সরঞ্জামের ধরণ , এখনও অবশ্যই স্তন্যপান করে।


1
আমার সর্বকালের প্রিয় একটি ভাষা ব্যবহারের জন্য +1। এটি পিসিতে কোড শিখতে প্রথম ভাষা language
বহুবর্ষীয়

5

ইউনিারি 0

আপনারা সকলেই জানতেন যে এটি আসছিল। প্রথম ব্রেনফাক প্রোগ্রাম:

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

আমি এটিকে "পঠনযোগ্য" করে তুলতে নিউলাইনগুলি যুক্ত করেছি তবে এর হ্যামিং ওজন 4066 repeatedly অবশ্যই এটি আপনার নিজেরাই চালানো উচিত: 226 (4066% 256) (প্রযুক্তিগতভাবে e xe2) তাই স্পষ্টভাবে এটি নিজেকে বিজয়ী হিসাবে বিধিবিধান করে।

এখন আমরা এটিকে ইউনারিতে রূপান্তর করি এবং পাই

000 ... 9*google^5.9 0's ... 000

আমরা 0 0 এবং বুম এর জন্য NULL অক্ষর \ x00 সহ অবিচ্ছিন্ন বাস্তবায়ন ব্যবহার করি, 0 এর ওজন হ্যামিং করে।

বোনাস প্রশ্ন : এএসসিআইআই অক্ষর কীসের জন্য cআপনি এই প্রোগ্রামটি Nরিমিশনগুলির সাথে যুক্ত স্ট্রিংয়ে চালাতে পারেন এবং এতে সেই চরিত্রের আউটপুট রয়েছে। (EG 32 স্পেসের একটি স্ট্রিং একটি স্থান দেয়)। Nকাজের মানগুলি (তাদের মধ্যে একটি অসীম সংখ্যা কাজ করবে, অথবা কেউই কাজ করবে না)।


1
আমি নিশ্চিত না যে আমি এই সমাধানটি বুঝতে পেরেছি। ব্রেনফাক প্রোগ্রামটির একটি বিশাল হামিং ওজন রয়েছে। ইউনারি কি নাল বাইটকে কোনও প্রোগ্রাম হিসাবে গ্রহণ করে, বা ইউনারিকে পুনরায় বাস্তবায়ন করতে হবে? যদি এটি পরে থাকে তবে এটি সত্যই কোনও বৈধ সমাধান নয় - যে কেউ বলতে পারে "আমি এমন একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ সংজ্ঞায়িত করতে পারি যেখানে কোনও একক ইনপুট বাইট {ফলাফল}" দেয় এবং সাইটে প্রতিটি কোড গল্ফ চ্যালেঞ্জ জিততে পারে।
বহুবর্ষীয়

1
একটি নাল চরিত্র Unary ভাল হবে। আপনার গণনা বন্ধ করুন বলার জন্য আপনার প্রয়োজন সমস্ত ইওএফ। প্রকৃতপক্ষে এই ফাইলটি পড়ার জন্য এখানে কিছু সিডো-সি রয়েছে: main(){ bignum Unarynum = 0; int c; while(EOF!=(c=readchar())){ Unarynum++; } return Unarynum; }আপনি আপনার ইউনারি চর হিসাবে যা পছন্দ করেন তা মোটেই গুরুত্বপূর্ণ নয় (যতক্ষণ না এটি ইওএফ নয়)।
12:30 টায় ওয়ালেপ করুন

1
ভাল এখানে সি সংকলকের একটি অনার যা নাল অক্ষরগুলির সাথে সূক্ষ্মভাবে কাজ করে: আদর্শ one.com/MIvAg । অবশ্যই এই প্রোগ্রামটি তৈরি করার জন্য প্রয়োজনীয় ফাইলটি মহাবিশ্বের সাথে খাপ খায় না, তবে এটি চালানোর ক্ষমতা আমাদের রয়েছে।
ওয়ালেপ করুন

3
আপনি না পারেন, তাহলে আসলে এটি চালানোর জন্য, এটা সত্যিই একটি সমাধান নয়।
বহুবর্ষীয়

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

4

সি, ওজন 322 263 256

হামিং ওজনের হামিং ওজন কি গণনা করে?

main(D,H,A)char*A,**H;{for(A=*++H;*A;A+=!(*A/=2))D+=*A%2;printf("%d",D-2);}

বেশিরভাগ স্ট্যান্ডার্ড গল্ফ কৌশল ব্যবহার করা হয়।
একটি একক লুপ ওজন গণনা করে (ডান স্থানান্তরিত করা এবং শূন্য না হওয়া পর্যন্ত যোগ করা) এবং স্ট্রিংটি স্ক্যান করে (শূন্যের কাছে পৌঁছলে অগ্রণী পয়েন্টার)।
ধরে Dনেওয়া 2 (একক প্যারামিটার) এ আরম্ভ করা হয়।

হামিং ওজন নির্দিষ্ট অপ্টিমাইজেশান:
1. ABDH, ওজন 2 সঙ্গে, নামের জন্য ব্যবহৃত।
2. *++Hবেশি পছন্দ H[1]


হাহ, আমি এখন পর্যন্ত আপনার প্রথম বাক্যটি বুঝতে সম্পূর্ণভাবে ব্যর্থ হয়েছি।
ব্রেডবক্স

আপনি একটি যেমন ফলাফলের outputting দ্বারা 230 থেকে স্কোর নিচে পেতে পারেন ইউনারী : সংখ্যাmain(D,H,A)char*A,**H;{for(A=*++H;*A;A+=!(*A/=2))if(*A%2)printf("@");}
schnaader

@ স্কনাডার, আমি কখনই জানতাম না যে @ইউনারি সিস্টেমে ডিজিট ছিল was আমি ভেবেছিলাম এটা শুধুমাত্র ব্যবহার 0.. 0। তবে আপনি যদি এই পথে যেতে চান printf("@"+*a%2)তবে উপায়টি খাটো।
ugoren

@ ইউগোরেন: ইউনিেরির সম্মেলন / সংজ্ঞা নির্ভর করে। যেমন এন.ইউইকিপিডিয়া.org / উইকি / ইউনারি_ নিউমারাল_সিস্টেম ট্যালি চিহ্ন ব্যবহার করে এবং বলে যে "অন্যান্য "তিহ্যবাহী বেসগুলিতে যেমন আছে তেমনই শূন্যের প্রতিনিধিত্বকারী কোনও স্পষ্ট প্রতীক নেই"।
schnaader

@ শ্যাঙ্কাডার, ঠিক আছে, তবে আমি মনে করি এটি "সংখ্যার হিসাবে" খুব বেশি প্রয়োজন stret
ugoren

4

গল্ফস্ক্রিপ্ট 84 72 58

{2base~}%{+}*

(হাওয়ার্ড এবং পিটার টেলর তাদের সহায়তার জন্য ধন্যবাদ)

ইনপুট: ইনপুট স্ট্রিংটি স্ট্যাকের মধ্যে থাকতে হবে (কমান্ড লাইন আর্গুমেন্ট হিসাবে পাস করা হয়েছে, বা কেবল স্ট্যাকের উপরে রাখা হয়েছে)।

আপনি যদি কমান্ড লাইন থেকে এটি চালনা করেন তবে নিশ্চিত হয়ে নিন যে আপনি ব্যবহার করেছেন echo -n, অন্যথায় পেছনের নতুন লাইনটিও গণনা করা হবে।

আউটপুট: কনসোলে হামিং ওজনের মান প্রিন্ট করে

প্রোগ্রামটি এখানে পরীক্ষা করা যায়


1
গল্ফস্ক্রিপ্ট কি সংবেদনশীল? যদি না হয়, আপনি BASEপরিবর্তে ব্যবহার করে কয়েকটি বিট সংরক্ষণ করতে পারেন baseআপডেট: সবেমাত্র চেক করা হয়েছে, BASEকাজ করে না। ভাল সমাধান :)
বহুবর্ষীয়

@ সর্বজনীন আমি আপনার মন্তব্য TEST/ testমন্তব্য দেখার পরে চেষ্টা করেছিলাম :) তবে এটি কার্যকর হয় না doesn't
ক্রিশ্চিয়ান লুপাস্কু

প্রথম স্থানে {...}2*আবেদন করে 2base~আপনি পরিত্রাণ পেতে পারেন । স্কোরটি
হাওয়ার্ড

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

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

2

পার্ল, ৮০ (২২ টি চর)

কাজ ও সম্পন্ন:

perl -0777nE 'say unpack"%32B*"'

বা 77 টি ওজনের একটি বিকল্প সংস্করণ এখানে (21 অক্ষর):

perl -0777pE '$_=unpack"%32B*"'

যদিও আমি এই সংস্করণটি তেমন পছন্দ করি না, কারণ এর আউটপুট চূড়ান্ত নিউলাইনটিকে বাদ দেয়।

ওজন গণনা করতে, আমি ধরে নিচ্ছি যে আমি স্বাভাবিক উপায়ে অক্ষরগুলি গণনা করছি ( perl -e/ বাদে -Eঅন্য বিকল্পের অক্ষরগুলি সহ)। যদি কোনও কারণে লোকেরা এই সম্পর্কে অভিযোগ করে তবে আমি বিকল্পগুলি ছাড়াই সবচেয়ে ভাল করতে পারি তা হ'ল 90 (26 টি):

$/=$,,say unpack"%32B*",<>

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

$ perl -0777nE 'say unpack"%32b*"' rickroll.txt
7071

গম্ভীর গর্জন।


2

পাইথ - 15

দাবি অস্বীকার: পাইথ এই চ্যালেঞ্জের চেয়ে কম বয়সী এই উত্তরটি জয়ের যোগ্য নয়।

.Bবাইনারি উপস্থাপনের জন্য ব্যবহার করে এবং এর সংখ্যা গণনা করে "1"

/.BQ\1

zবিপরীতে সংরক্ষণ করতে একটি স্ট্রিংয়ে ইনপুট নেয়Q

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


1

স্কেলা 231

readLine().map(_.toInt.toBinaryString).flatten.map(_.toInt-48)sum

স্বতঃসংশ্লিষ্ট কোড:

"""readLine().map(_.toInt.toBinaryString).flatten.map(_.toInt-48)sum""".map(_.toInt.toBinaryString).flatten.map(_.toInt-48)sum

স্বতঃপরিবর্তনীয় পরিবর্তন সহ


এটির ওজন 495 নয়, 231 @
ugoren

1
@ ইউগোরেন: তবে এটি কেবল 65 টি চর rs প্রোগ্রামটি প্রায় দ্বিগুণ মুদ্রিত হয়: একবার হামিং ওজন গণনা করার জন্য কোড এবং প্রোগ্রামের জন্য এটি গণনা করার জন্য স্থিতিশীল ইনপুট হিসাবে দ্বিতীয়বার। তবে গণনার অংশটি সামনে "রিডলাইন ()" অনুপস্থিত, কারণ এটি আক্ষরিক ইনপুট নেয়। আমি উত্তরটি নিজেই পরিষ্কার করার চেষ্টা করেছি।
ব্যবহারকারী অজানা

1

জাভা, ওজন 931 774 499 454

আমি মনে করি প্রায় 300 এর বেশি ওজন সহ এই মুহুর্তে এটিই একমাত্র উত্তর।

class H{public static void main(String[]A){System.out.print(new java.math.BigInteger(A[0].getBytes()).bitCount());}}

কমান্ড লাইন আর্গুমেন্ট হিসাবে ইনপুট আশা করে।


1

গনুহ sed -r , 467 + 1

(ব্যবহারের জন্য +1) -r - বা এটি +4 হওয়া উচিত?)

উত্স প্রতি লাইনে অবিচ্ছিন্ন মান হিসাবে আউটপুট; দশমিক মোটে রূপান্তর করতে, আউটপুটটিকে পুনর্নির্দেশ করুন | tr -d "\n" | wc -c। সমস্ত মুদ্রণযোগ্য ASCII অক্ষর (32-126), প্লাস লাইনফিড (10) গণনা করে।

s@[a-z]@\U& @g
s@[?{}~]@      @g
s@[][/7;=>OW|^]@     @g
s@[-'+.3569:<GKMNSUVYZ\\]@    @g
s@[#%&)*,CEFIJL1248ORTX]@   @g
s@$|[!"$(ABDH0P`]@  @g
y! @!11!

সমস্ত অক্ষর তালিকাবদ্ধ করা এড়ানো শক্ত, তবে আমরা এই পর্যবেক্ষণটি হ্রাস করতে পারি যে ছোট হাতের অক্ষরগুলির সাথে বড় হাতের অক্ষরের তুলনায় হ্যামিং ওজনের একটি বেশি থাকে। আমরা স্টেটমেন্ট বিভাজক হিসাবে সেমিকোলনের (স্কোর 5) ওভার নিউলাইনকে (স্কোর 2) পছন্দ করি; প্যাটার্ন ডেলিমিটার হিসাবে আমরা @(স্কোর 1) বা !(স্কোর 2) ওভার /(স্কোর 5) পছন্দ করি।

দ্রষ্টব্য - অক্ষরের সঠিক সেটগুলি পেতে, আমি man asciiওজন অনুসারে বাছাই করা এক থেকে এই টেবিলটি তৈরি করেছি । প্রতিটি অক্ষরের সামগ্রিক ওজন পেতে কেবল ডান এবং নীচে স্কোর যুক্ত করুন:

   2 4   3 5 6   7 
   ---  ------   - 
0:   @   0 P `   p |0

1: ! A   1 Q a   q | 
2: " B   2 R b   r |1
4: $ D   4 T d   t | 
8: ( H   8 X h   x | 

3: # C   3 S c   s | 
5: % E   5 U e   u | 
6: & F   6 V f   v |2
9: ) I   9 Y i   y | 
A: * J   : Z j   z | 
C: , L   < \ l   | | 

7: ´ G   7 W g   w | 
B: + K   ; [ k   { |3
D: - M   = ] m   } | 
E: . N   > ^ n   ~ | 

F: / O   ? _ o     |4
   ---  ------   -  
    1      2     3

এটি অন্যের পক্ষে কার্যকর প্রমাণিত হতে পারে।


0

জুলিয়া 262 268

পরিবর্তিত সংস্করণটি 6 (262) সঞ্চয় করার জন্য হ্যান্ডি 'কাউন্টি_নেস' ফাংশন ব্যবহার করে

show(mapreduce(x->count_ones(x),+,map(x->int(x),collect(ARGS[1]))))

ওয়ান গণনা কার্যক্রমে কোনও বিল্ট ব্যবহার করে পুরানো সংস্করণ (268)

show(mapreduce(x->int(x)-48,+,mapreduce(x->bits(x),*,collect(ARGS[1]))))

ইনপুট জন্য কমান্ড লাইন যুক্তি ব্যবহার করে।


0

সিজেম 52 বা 48

ইনপুট ইতিমধ্যে স্ট্যাক না থাকলে (52)

q:i2fbs:s:i:+

যদি ইনপুট স্ট্যাকে থাকে (48)

:i2fbs:s:i:+

উদাহরণ স্বরূপ

"Hello World":i2fbs:s:i:+

0

জুলিয়া, এইচডাব্লু 199

H=mapreduce;H(B->B=='1',+,H(P->bits(P),*,collect(A[:])))

সঙ্গে

A="H=mapreduce;H(B->B=='1',+,H(P->bits(P),*,collect(A[:])))"

অথবা সরাসরি স্ট্রিং byুকিয়ে:

julia> H=mapreduce;H(B->B=='1',+,H(P->bits(P),*,collect("H=mapreduce;H(B->B=='1',+,H(P->bits(P),*,collect(A[:])))")))
199

অবরুদ্ধ সংস্করণ (এইচডাব্লু 411) এর মতো দেখাচ্ছে:

bitstring=mapreduce(x->bits(x),*,collect(teststring[:]))
mapreduce(checkbit->checkbit=='1',+,bitstring)

এবং এর মজাদার জন্য, বেকেরগের সমস্যাটি গ্রহণের একটি অনুকূলিত সংস্করণ (হামিং ওজন 231 ) এখানে রয়েছে:

A=mapreduce;show(A(B->int(B)-48,+,A(B->bits(B),*,collect(H[:]))))

সঙ্গে

H="A=mapreduce;show(A(B->int(B)-48,+,A(B->bits(B),*,collect(H[:]))))"

0

এইচপিপিএল (এইচপি প্রাইম প্রোগ্রামিং ভাষা), 74

sum(hamdist(ASC(a),0))

এইচপি প্রাইম গ্রাফিং ক্যালকুলেটরের একটি অন্তর্নির্মিত হামডিস্ট () ফাংশন রয়েছে। প্রতিটি চরিত্রের হামিং ওজন 0 থেকে হ্যামিং দূরত্বের সমান।

এএসসি (স্ট্রিং) প্রতিটি অক্ষরের ASCII মানগুলির একটি অ্যারে তৈরি করে।

হ্যামডিস্ট (মান, 0) প্রতিটি ASCII মানের জন্য 0 থেকে হামিং দূরত্ব গণনা করে

যোগফল () সমস্ত মানকে যোগ করে।

নিজস্ব উত্স কোডের হামিং ওজন গণনা করা হচ্ছে:

হামিং ওয়েট এইচপিপিএল


0

05AB1E , ওজন 17 (4 বাইট )

ÇbSO

এটি অনলাইনে চেষ্টা করুন বা আরও কিছু পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

Ç       # Convert the characters in the (implicit) input to their ASCII decimal values
        #  i.e. "Test" → [84,101,115,116]
 b      # Convert those values to binary
        #  i.e. [84,101,115,116] → ["1010100","1100101","1110011","1110100"]
  S     # Split it into a list of 0s and 1s (implicitly flattens)
        #  i.e. ["1010100","1100101","1110011","1110100"]
        #   → [1,0,1,0,1,0,0,1,1,0,0,1,0,1,1,1,1,0,0,1,1,1,1,1,0,1,0,0]
   O    # Sum those (and output implicitly)
        #  i.e. [1,0,1,0,1,0,0,1,1,0,0,1,0,1,1,1,1,0,0,1,1,1,1,1,0,1,0,0] → 16

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