ইউনিকোড ভগ্নাংশ


21

বিন্যাসে একটি ভগ্নাংশ দেওয়া হয়েছে m/n(যেখানে মি এবং এন ক্যাপ্রাইম পূর্ণসংখ্যার), ইউনিকোড সম্পর্কিত ভগ্নাংশটি নির্ধারণ করুন। আপনার প্রোগ্রাম / ফাংশনটি কোনও ইউনিকোড চরিত্রের সাথে মিলে না এমন কোনও ইনপুট নেবে বলে আশা করা হবে না। অ্যারে, যেমন [2, 3]বিরোধিতা হিসাবে 2/3গ্রহণ করা হয়। m / nএর বিপরীতেও m/nঠিক আছে। দুটি পৃথক ইনপুট mএবং nবৈধ।

ইউনিকোড ভগ্নাংশগুলি হ্যান্ডেল করা আবশ্যক:

½, ⅓, ⅔, ¼, ¾, ⅕, ⅖, ⅗, ⅘, ⅙, ⅚, ⅐, ⅛, ⅜, ⅝, ⅞, ⅑, ⅒

সুতরাং, সম্ভাব্য ইনপুটগুলি নিম্নরূপ:

1/2, 1/3, 2/3, 1/4, 3/4, 1/5, 2/5, 3/5, 4/5, 1/6, 5/6, 1/7, 1/8, 3/8, 5/8, 7/8, 1/9, 1/10

অক্ষরগুলির ইউনিকোড কোডপয়েন্টগুলি নিম্নরূপ:

188 ¼
189 ½
190 ¾
8528 ⅐
8529 ⅑
8530 ⅒
8531 ⅓
8532 ⅔
8533 ⅕
8534 ⅖
8535 ⅗
8536 ⅘
8537 ⅙
8538 ⅚
8539 ⅛
8540 ⅜
8541 ⅝
8542 ⅞

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

1/2 -> ½
1/3 -> ⅓
2/3 -> ⅔
1/4 -> ¼
3/4 -> ¾
3/8 -> ⅜
1/10 -> ⅒

আপনার কোডটি যতটা সম্ভব সংক্ষিপ্ত করুন; এটি কোড গল্ফ।


আপনি কি প্রতিটি ভগ্নাংশের জন্য ইউনিকোড কোড পয়েন্ট যুক্ত করতে পারেন?
রড

4
188 ¼, 189 ½, 190 ¾, 8528 ⅐, 8529 ⅑, 8530 ⅒, 8531 ⅓, 8532 ⅔, 8533 ⅕, 8534 ⅖, 8535 ⅗, 8536 ⅘, 8537 ⅙, 8538 ⅚, 8539 ⅛, 8540 ⅜, 8541 ⅝, 8542 ⅞
লিকি নুন

আপনি কোনও ইনপুট মঞ্জুর করবেন না যা কোনও ইউনিকোড চরিত্রের সাথে মিলে না। এর অর্থ কি এই যে আমাদের অবশ্যই অবৈধ ইনপুটগুলি সনাক্ত করতে হবে? নাকি এমন হওয়ার কথা নয়?
আর্নল্ড

পছন্দ করুন
ব্যবহারকারী 202729

ইনপুট কি কোনও ভগ্নাংশকে প্রতিনিধিত্ব করে এমন কোনও বস্তু হতে পারে?
ব্র্যাড গিলবার্ট বিগগিলস

উত্তর:


14

জাভাস্ক্রিপ্ট (নোড.জেএস) , 78 77 বাইট

@ হারমানলাউনস্টেইনকে ধন্যবাদ 1 বাইট সংরক্ষণ করা

বাক্য গঠন সিনট্যাক্সে ইনপুট নেয় (m)(n)

m=>n=>'¾⅗  ⅜    ⅞⅘½⅓¼⅕⅙⅐⅛⅑⅒⅚⅔⅝⅖'[(m*9+n)%31]

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


@ ব্যবহারকারী202729 আমি নিশ্চিত যে আমি অন্য কোথাও অনুরূপ সূত্র ব্যবহার করেছি। যদিও কোন চ্যালেঞ্জের জন্য আমি মনে করি না। এখন, এটির সাথে অক্ষরগুলি উত্পন্ন করার চেষ্টা করা উপযুক্ত String.fromCharCode()তবে আমি একই ধরণের বাইট গণনা আশা করব।
আর্নৌল্ড


@ হারমানলাউনস্টাইন ধন্যবাদ! (আমি সেটিকে মিস করেছি কারণ আমি প্রাথমিকভাবে কেবলমাত্র ক্ষুদ্রতম মডুলোর সন্ধান করছিলাম empty খালি স্লটগুলি অনুসরণ করার পরে আমি ইতিমধ্যে XOR পদ্ধতিতে স্যুইচ করেছি))
আর্নল্ড

এবং আপনি যদি খুব শীঘ্রই আপনার উত্তর পোস্ট করেন তবে এটি বেশিরভাগ ক্ষেত্রে আপনার দৃষ্টিভঙ্গি ব্যবহার করতে মানুষকে তৈরি করবে ...
ব্যবহারকারী 202729

12

পার্ল 6 ,  48  43 বাইট

{chr first *.unival==$^m/$^n,(|^191,|(8528..*))}

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

{chr first *.unival==$_,(|^191,|(8528..*))}

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

সম্প্রসারিত:

{  # bare block lambda with implicit parameter 「$_」
  chr

    first               # find the first value

      *.unival ==       # which has a unicode value that matches
          $_,           # the input fraction (as a Rational)

      (
        |^191,     # ¼(189) ½(188) ¾(190)
        |(8528..*) # all of the rest
      )
}

নোট করুন যে অনুসন্ধানটি বিভক্ত করতে হবে যাতে এটি অন্যান্য ইউনিকোডের অক্ষরগুলিতে একই রকমের অক্ষর না দেয়। (অন্যথায় এটি হবে (1..*))


3
অপেক্ষা করুন, পার্ল 6 এর সঠিক জিনিসটির জন্য অন্তর্নির্মিত আছে ?
এরিক আউটগল্ফার

2
@ এরিকথ আউটগল্ফার আমি নিশ্চিত নই যে এটি কীভাবে দেখা যায়, তবে হ্যাঁ, আপনি ফাইলের ইউনিকোড চরিত্রের ডেটাবেস থেকে নবম কলামে প্রতিফলিত কোড পয়েন্টের সংখ্যাসূচক মানটি অ্যাক্সেস করতে পারবেন UnicodeData.txt। উদাহরণস্বরূপ, U + 109BC MEROITIC CURSIVE FRACTION ELEVEN TWELFTHSএর চরিত্রের বৈশিষ্ট্য রয়েছে nv=11/12। খালি শূন্য সংখ্যা সংক্রান্ত মান সহ কিছু 1500 কোড পয়েন্ট রয়েছে - এই ছোট চ্যালেঞ্জের চেয়ে সমাধানের জন্য কেউ তাকে জিজ্ঞাসা করে। এগুলি সম্পূর্ণ সংখ্যা বা যুক্তিযুক্ত।
tchrist

7

জাভাস্ক্রিপ্ট (ES6), 88 86 84 81 79 বাইট

@ আরনাউল্ডকে 2 বাইট সংরক্ষণ করা হয়েছে

m=>n=>String.fromCharCode((4%n?8528:188)|"  130470912"[n]*1.3+~-m/-~"3 1"[n-6])

অন্যান্য জেএস উত্তরের মতো সংক্ষিপ্ত নয়, তবে প্রতিটি ভগ্নাংশের কোড-পয়েন্ট গণিতের সাথে গণনা করা মজাদার ছিল।

পরীক্ষার স্নিপেট

পুরানো পদ্ধতি (৮২ বাইট):

m=>n=>String.fromCharCode((4%n?8539:189)-("0x"+"  08162b0a9"[n])+~-m/-~"3 1"[n-6])

@ আরনাউল্ডকে ধন্যবাদ জানিয়ে এটিতে 4 টি বাইট সংরক্ষণ করা হয়েছে।


1
উভয় সংস্করণে -2 বাইট-~'3 1'[n-6]
আর্নল্ড

7

এপিএল (ডায়ালগ) , 88 64 বাইট

{⎕UCS(⌊(⍺-1)÷(1+⍵≡8)⌈4×⍵≡6)-(291194049⊤⍨1012)[⍵]-1898539××⍵|4}

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

-3 ধন্যবাদ তাইজাইমা

ETHPoductions এর 84-বাইট পদ্ধতির ব্যবহার।

f←Tio অন্তর্ভুক্ত সংখ্যাত করা হয় না, যেহেতু এটি সেখানে রাখা হচ্ছে মাত্র ফাংশন পরীক্ষা পাবে।


2

এসওজিএল ভি0.12 , 51 বাইট

5*+'æ%'⁵%"∫}ΣS“LI─{"#!“+ζ}¹"¾ŗŗŗŗŗŗ⅛ŗ⅜½⅝ŗ⅞ ⅓⅔ŗ  ¼”W

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

ম্যাপিং ব্যবহার করে (m + n*5)%33%22

ব্যাখ্যা:

5*                        multiply the 1st input by 5
  +                       add to the 2nd input
   'æ%                    modulo 33
      '⁵%                 module 22

"∫}ΣS“                    push 2153527158
      LI─                 base 11 decode that - [10 0 5 6 7 8 9 1 2]
         {     }          for each of that
          "#!“+             add 8528
               ζ            and convert to a character
                "...”     push "¾ŗŗŗŗŗŗ⅛ŗ⅜½⅝ŗ⅞ ⅓⅔ŗ  ¼", replacing ŗ with each character of the above array
                     W    and get the (m + n*5)%33%22th item from that

2

ক্লোজার, 127 বাইট

(comp{2/3\⅔ 4/5\⅘ 1/3\⅓ 1/2\½ 5/6\⅚ 1/5\⅕ 1/4\¼ 3/5\⅗ 1/7\⅐ 3/4\¾ 2/5\⅖ 1/6\⅙ 1/9\⅑ 1/8\⅛ 3/8\⅜ 1/10\⅒ 5/8\⅝ 7/8\⅞}read-string)

একটি বেনামী ফাংশন যা ইনপুট হিসাবে গ্রহণ করে "1/2" এবং সংশ্লিষ্ট চরিত্রটি ফেরত দেয়।

ক্লোজার Ratioথেকে একটি ভগ্নাংশের অক্ষরে সরাসরি ম্যাপিং । comp, এবং ক্লোজুর মানচিত্রগুলি কার্যকারিতা হ'ল সত্য এখানে helped স্ট্রিং ইনপুটটিকে read-stringঅনুপাতের ধরণের হিসাবে মূল্যায়নের জন্য দিয়ে যেতে হয়েছিল, যেহেতু এটি আমাকে মানচিত্রে সমস্ত ব্লোটিং উদ্ধৃতি বাতিল করতে দেয়। compআমাকে বিন্দু মুক্ত করতে দিন, যা দুর্দান্ত ছিল। "পূর্ণ" কোডটি হবে:

(defn to-unicode-fraction [frac]
  (get {2/3\⅔ 4/5\⅘ 1/3\⅓ 1/2\½ 5/6\⅚ 1/5\⅕ 1/4\¼ 3/5\⅗ 1/7\⅐,
        3/4\¾ 2/5\⅖ 1/6\⅙ 1/9\⅑ 1/8\⅛ 3/8\⅜ 1/10\⅒ 5/8\⅝ 7/8\⅞}
       (read-string frac)))

অন্যান্য উত্তরগুলি সন্ধানের পরে, আমি বুঝতে পারি যে এই পদ্ধতিরটি বেশ নির্বোধ। আমি এটির উন্নতি করার উপায় খুঁজছি।


1

সুইফ্ট , 106 82 বাইট

@ আর্নল্ডস জাভাস্ক্রিপ্ট উত্তরের পোর্ট

@ মিস্টার এক্সকোডারকে 24 বাইট সংরক্ষণ করা হয়েছে

{Array("¾⅗  ⅜    ⅞⅘½⅓¼⅕⅙⅐⅛⅑⅒⅚⅔⅝⅖")[($0*9+$1)%31]}

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


82 বাইটের জন্য ক্লোজার ব্যবহার করুন (আপনাকে var f=বাইট গণনায় অন্তর্ভুক্ত করতে হবে না )
মিঃ এক্সকডার

1

কাঠকয়লা , 77 48 46 বাইট

F§§⪪“YW³⦄Eν~vγ@⊖Xμ~?Iw⸿M➙b℅¦⦃”,NN℅⁺℅ι×⁹⁰∨№βι⁹⁴

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। সম্পাদনা করুন: ASCII অক্ষর থেকে মাল্টিবাইট চরগুলিতে ম্যাপিং করে 29 31 বাইট সংরক্ষণ করা হয়েছে। ব্যাখ্যা:

    “....”                  Compressed string `R,EFcGbIMDO,H J,K  Pd,L,N Q,`
   ⪪      ,                 Split on commas
           N                First input
  §                         Circularly index
            N               Second input
 §                          Circularly index
F                           "Loop over" character (loop variable `i`)
                     №βι    Count of `i`s in lowercase letters
                    ∨   ⁹⁴  Replace zero result with 94
                 ×⁹⁰        Multiply by 90
               ℅ι           Take ordinal of `i`
              ⁺             Sum
             ℅              Convert back to character
                            Implicitly print


0

পাইথন 3, 97 বাইট

lambda m,n:'½ ⅓⅔ ¼_¾ ⅕⅖⅗⅘ ⅙___⅚ ⅐ ⅛_⅜_⅝_⅞ ⅑ ⅒'.split()[n-2][m-1]

2
এটি কাজ করে না বলে মনে হচ্ছে, [n-2][m-1]পরিবর্তে আপনার প্রয়োজন ।
এরিক আউটগলফার

ঠিক আছে, আমি অনুমান করি আমি এটি প্রথম পরীক্ষা করিনি ...
রায়ান ম্যাক ক্যাম্পবেল

0

ভিম স্ক্রিপ্ট, 67 বাইট

fu!F(m,n)
if a:n==10|norm a⅒ 
else|exe'norm a'.a:m.a:n
endif
endfu

ফাংশনটি ভিমের ডিগ্রাফগুলির সাথে কাজ করে যা এগুলি শুরু করার পরে প্রবেশ করা হয় তবে ctrl-k.স্পষ্টতই, উপরের কোড ব্লকে এর ctrl-kপরে প্রাসঙ্গিক চরিত্রটি exe'normরেন্ডার করা হয়নি।

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