হেক্সকে উচ্চারণ করছেন


26

হেক্সকে উচ্চারণ করছেন

আপনারা যারা সিলিকন ভ্যালি শোতে একচেটিয়া রয়েছেন তাদের জন্য, এই চ্যালেঞ্জটি এমন একটি এক্সচেঞ্জের দ্বারা অনুপ্রাণিত হয় যা এই ( ইউটিউব ) এর মতো হয়:

Kid -
  Here it is: Bit… soup. It’s like alphabet soup, BUT… it’s ones and zeros 
  instead of letters.
Erlich Bachman -
  {silence}
Kid -
  ‘Cause it’s binary? You know, binary’s just ones and zeroes.
Erlich Bachman -
  Yeah, I know what binary is. Jesus Christ, I memorized the hexadecimal 
  times tables when I was fourteen writing machine code. Okay? Ask me 
  what nine times F is. It’s fleventy-five. I don’t need you to tell me what binary is.

এটি লক্ষ করা উচিত যে প্রযুক্তিগতভাবে, 0x9 * 0xF = 0x87'পঁচাত্তর' নয়, তবে এটি একটি গুরুত্বপূর্ণ প্রশ্ন নিয়ে আসে - আপনি কীভাবে কথোপকথনে হেক্সট উচ্চারণ করবেন? এটি oh ex eff effসহজে জিভ থেকে প্রবাহিত হওয়ার মতো নয় , তাই আমাদের কী করা উচিত? এখানে আমরা একটি সহজ উচ্চারণের চার্ট অনুসরণ করব।

A = ay       A0 = atta-       
B = bee      B0 = bibbity-    
C = cee      C0 = city-       
D = dee      D0 = dickety-    
E = ee       E0 = ebbity-     
F = eff      F0 = fleventy-   

আমরা একটি 4-দৈর্ঘ্যের হেক্স সংখ্যাটিকে দুটি করে দুটি গ্রুপে বিভক্ত করতে পারি এবং উপরের সারণী থেকে উচ্চারণটি পাশাপাশি সংখ্যার জন্য সাধারণ ইংরেজি উচ্চারণ নির্ধারণ করতে পারি। সুতরাং, উদাহরণস্বরূপ 0xFFAB, আমরা পেতে হবে Fleventy-eff bitey atta-bee

যদি কোনও নম্বর অন্তর্ভুক্ত থাকে 0xF5ABতবে আপনি মুদ্রণ করবেন Fleventy-five bitey atta-bee। এছাড়াও, যদি কোনও সংখ্যা গোষ্ঠীগুলির মধ্যে একটি শুরু করে, আপনি এটি "দশক" উচ্চারণ ব্যবহার করবেন। উদাহরণস্বরূপ, 0x5FAAহয়ে উঠবে Fifty-eff bitey atta-ay। আপনার মত কিছু আছে যেখানে ক্ষেত্রে 0x1FAC, এই হবে Effteen bitey atta-cee। কিন্তু, যদি এই নিয়ম জন্য ব্যবহার করা যেতে ছিল 0x1AF4, a-teenজন্য বিভ্রান্ত করা যাবে পারে eighteen, তাই আপনি পূর্বে লিখুন আবশ্যক ওয়াই সুতরাং, সঠিক আউটপুট হবেYayteen bitey fleventy-four

ক্ষেত্রে 0xD0F4, পরিবর্তে Dickety-zero bitey fleventy-four, আমরা শূন্য এবং মুদ্রণ উপেক্ষা করতে হবে Dickety-bitey fleventy-four

হাইফেনগুলি কেবলমাত্র দুটি গ্রুপের মধ্যে উপস্থিত হওয়া উচিত, অর্থাত্ প্রথম গ্রুপটি কেবল একটি শব্দ না হলে বাইটে একটি হাইফেনের সাথে কোনও একটি গ্রুপের সাথে যুক্ত হওয়া উচিত নয়! তাই 0x04F4হবে four-bitey fleventy-four, কিন্তু 0x44F4হবে forty-four bitey fleventy-fourট্রাইকোপলাক্স যেমন বলেছে, কোনও বৃত্তাকার সংখ্যা অনুসরণ করার পরে কেবল কামড়কে হাইফেন করা উচিত।

এটি কীভাবে কাজ করবে তার একটি বিস্তৃত দেখার জন্য, নীচে I / O উদাহরণটি দেখুন।

উদ্দেশ্য

এমন একটি প্রোগ্রাম বা ফাংশন তৈরি করুন যা কোনও হেক্সাডেসিমাল স্ট্রিংটিকে ইনপুট বা কোনও ফাংশন আর্গুমেন্ট হিসাবে গ্রহণ করবে এবং এর উচ্চারণ তৈরি করবে। আউটপুট অবশ্যই সঠিক মূলধন থাকতে হবে। আপনি ধরে নিতে পারেন যে এই সংখ্যার দৈর্ঘ্য সর্বদা 4 হবে।

উদাহরণ I / O

"0xFFFF" -> "Fleventy-eff bitey fleventy-eff"
"0x0000" -> "Zero"
"0x0010" -> "Ten"
"0x0100" -> "One-bitey zero"
"0x1110" -> "Eleven-bitey ten"
"0xBEEF" -> "Bibbity-ee bitey ebbity-eff"
"0x9999" -> "Ninety-nine bitey ninety-nine"
"0xA1B2" -> "Atta-one bitey bibbity-two"
"0x3C4F" -> "Thirty-cee bitey forty-eff"
"0x17AB" -> "Seventeen-bitey atta-bee"
"0x1AFB" -> "Yayteen-bitey fleventy-bee"
"0xAAAA" -> "Atta-ay bitey atta-ay"

এটি , তাই কমপক্ষে সংখ্যা বাইট জেতে।


6
হেক্স টাইম সারণীগুলি শেখার জন্য এখানে একটি সহজ কৌশল: এফ টাইমস টেবিলটি আপনার 16 টি আঙুল এবং পায়ের আঙ্গুলগুলিতে (থাম্ব এবং বড় আঙ্গুলগুলি বাদ দিয়ে) গণনা করা যেতে পারে। এগুলি কেবল একটি সারিতে লাইন করুন এবং এফ x এন গণনা করার জন্য নবমকে ভাঁজ করুন। ভাঁজ ডাউন অঙ্কের বামে অঙ্কের সংখ্যাটি প্রথম সংখ্যা এবং ভাঁজ ডাউন অঙ্কের ডানদিকে অঙ্কের সংখ্যাটি দ্বিতীয় সংখ্যা, আপনাকে কোনও 2 ডিজিটের একাধিক গণনা করার অনুমতি দেয়। উদাহরণস্বরূপ, F x C = বিবিটি চারটি দিতে Cth অঙ্কটি ভাঁজ করুন।
ট্রাইকোপলাক্স

2
@ থ্রিচোপল্যাক্স আমার বাচ্চা যখন অবাক হয়েছিল তখন আমি তাকে প্রথম দেখিয়েছিলাম যে তার আঙ্গুলগুলিতে
নাইনগুলির

@ জিওবিটস যা আমি এটাকে এক্সপ্লোর্ট করেছি - আমি সেই কৌশলটি ছোটবেলায় 9s-র পছন্দ করতাম।
ট্রাইকোপ্লাক্স

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

4
আপনি উদাহরণগুলি বাদে অন্য কোথাও "বিটি" উল্লেখ করবেন না
স্পার

উত্তর:


9

পাইথ - 312 293 286 251 বাইট

ডেটা হ্রাস শুরু করার সময়, আরও আসছে।

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

Kcs@LGjC"qNjÆÉý(7läQ«I?sfçÂØ^Ðûü»   u$ÐÃoó}QÛã´Hf®?Nâ²-YÜZÔ7ÂþæX#\"åØ"26\q=+K>K11J.e?+?bnb\|@K+16k"ty"-kTbc"  twen | for | | | | | atta bibbi ci dicke ebbi fleven"d.srj"bitey "m?++@Kd?k<d18"teen"\-<d32+j\-@V,JKfT.Dd16\ ?Gh=G.DQ256tG4\-

আমি ইনপুটকে হেক্স আক্ষরিক হিসাবে Q এর মাধ্যমে ব্যাখ্যা করি যা এটি স্বয়ংক্রিয়ভাবে এর মাধ্যমে সনাক্ত করে 0x। তারপরে আমি এটিকে 256 বাইটে বিভক্ত করব এবং প্রথম বাইটটি যদি এটির শূন্য হয় তবে এটি দুটি অ্যারে দিয়ে ম্যাপ করুন, একটি তার জন্য 0-1Fএবং তারপরে 20-F0। দ্বিতীয়টি প্রথম অ্যারের মাধ্যমে একটি ডিভোড পায়। প্রথম বিকল্পটি শেষে হাইপেন পায় এবং দ্বিতীয়টি মাঝখানে হাইফেন এবং শেষে একটি স্থান পায়। এর সাথে যোগ দিন "bitey ", পরিসীমা দিয়ে মূলধন করুন, এবং হাইফেনগুলি স্ট্রিপ করুন .sএবং আমরা ভাল।

বেস সংকোচনের অংশটি আকর্ষণীয়ও কারণ আমি প্রথমটি প্রাথমিক 128 -> 256 রূপান্তর দিয়ে শুরু করেছি। তবে এখন, আমি যা করছি তা "q"স্থানের পরিবর্তে পৃথককারী হিসাবে ব্যবহার করছি । সুতরাং আমি এখন স্ট্রিংটি বেস 26 হিসাবে স্ট্রিং হিসাবে বিবেচনা করতে পারি xLG, প্রচণ্ড সংকোচনের উন্নতি করি।

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

টেস্ট স্যুট


আমি জানি যে এটি প্রশ্নে নেই, তবে আমি মনে করি আপনার আরও সংখ্যায় এক্সট্রাপোলেট করার চেষ্টা করা উচিত, যেমন 0x112233এবং0x93FBAC09
ভ্রুইম

2
@ আমি মনে করি এই উচ্চারণের মডেলটি এটি হারাবে, আহ! আপনি কি সত্যিই বলছেন কল্পনা করতে পারেন Ninety-three bitey fleventy-bee halfy atta-cee bitey nine?
কেদ

আমি মনে করি কিছু ভেঙে গেছে, এই মুহূর্তে আপনার কোডটি কেবলমাত্র প্রচুর পরিমাণে Truebiteyগুলি এবং Falsebiteyগুলি তৈরি করে।
কেড

@ ভিওজ- টেরেনারিগুলি ভেঙে গেছে। ইসহাক কয়েক দিন আগে তাদের আদেশটি উল্টেছিল। আমি গিয়ে তাদের পরিবর্তন করতে পারি এবং বাস্তবে একটি কয়েকটি বাইট সংরক্ষণ করতে পারি, তবে সেগুলি 14 এর মতো
মাল্টেসেন

আহ আমি দেখি. তাহলে পাইথের কোন সংস্করণ কার্যকারিতা সংরক্ষণ করে?
কেদ

5

জাভা - 856 বাইট

সংক্ষিপ্ত নয় তবে কমপক্ষে দ্বিতীয় উত্তর;)

এটি এমন একটি পদ্ধতি String p(String n)যা কাজটি করবে:

String p(String n){String[]b={"","ten","twen","thir","for","fif","six","seven","eigh","nine",
"atta","bibbi","ci","dicke","ebbi","fleven"};String[]s={"zero","one","two","three","four",
"five","six","seven","eight","nine","ay","bee","cee","dee","ee","eff"};String[]t={"ten",
"eleven","twelve","thir","four","fif","six","seven","eigh","nine","yay","bee","cee","dee",
"ee","eff"};int w=Byte.valueOf(n.substring(2,3),16);int x=Byte.valueOf(n.substring(3,4),16);
int y=Byte.valueOf(n.substring(4,5),16);int z=Byte.valueOf(n.substring(5,6),16);String r=(w==
1?t[x]+(x>2?"teen":""):((w==0?"":b[w]+(w>1&&w!=10?"ty":"")+"-")+(w==0&&x==0?"":s[x])))+((w==0
&&x>0||w==1&&x<3||w>0&&x==0)?"-":w==0&&x==0?"":" ")+(w>0||x>0?"bitey ":"")+(y==1?t[z]+(z>2?
"teen":""):((y==0?"":b[y]+(y>1&&y!=10?"ty":"")+"-")+(y>1&&z!=0||y==0?s[z]:"")));return (char)
(r.charAt(0)-32)+r.substring(1);}

4

জাভাস্ক্রিপ্ট - 577 719 বাইট

function h(e){for(e=e.match(/.{1,2}/g),r="",i=1;i<e.length;i++)j=parseInt("0x"+e[i]),0!=j?r+=c(parseInt("0x"+e[i]))+"bitey ":i>1?r+="zero-bitey":0;return r=""==r?"Zero":r[0].toUpperCase()+r.substr(1,r.length-7),null!==r[r.length-1].match(/[-\s]$/g)?r=r.substr(0,r.length-1):0,r}function c(e){return d=["zero","one","two","three","four","five","six","seven","eight","nine","ay","bee","cee","dee","ee","eff","ten","eleven","twelve","thir","four","fif","six","seven","eigh","nine","yay","bee","cee","dee","ee","eff"],p=["twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety","atta","bibbity","city","dickety","ebbity","fleventy"],1>e?"":e>31?p[Math.floor(e/16)-2]+"-"+d[e%16]+" ":17>e?d[e]+"-":d[e]+"teen-"}

আমি নিশ্চিত যে এখানে আরও কিছু উন্নতি করতে হবে। বোনাস যুক্ত হয়েছে, এটি নির্বিচারে দৈর্ঘ্যের হেক্স স্ট্রিংকে বিশ্লেষণ করে।

সম্পাদনা: ওফফফ, নেতৃস্থানীয় জিরোগুলি উপস্থিত থাকলে এটি সঠিকভাবে কাজ করে না। হুঁ।

সম্পাদনা 2: স্থির, আমি মনে করি। JSFiddle

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