এইচটিএমএল সত্তা কোন চরিত্র?


11

লক্ষ্য সত্যিই সহজ। ইনপুট হিসাবে একটি স্ট্রিং প্রাপ্ত, নিম্নলিখিত অক্ষরগুলির সাথে মিলে এমন সমস্ত HTML সত্ত্বাকে পার্স করুন (তাদের বড় হাতের অক্ষর সহ):

áàãâäéèêëíìîïóòõôöúùûüýÿ

বিচ্ছেদ বিধি:

  • প্রতিটি সত্তা দিয়ে শুরু হয় &এবং শেষ হয়;
  • উইলের পরে প্রথম অক্ষরটি &পরিবর্তিত অক্ষর হবে (চিঠি ক্ষেত্রে গুরুত্বপূর্ণ!)
  • অক্ষর বাকি ব্যবহার করতে অ্যাকসেন্ট নাম পড়ুন ( acute, grave, circ, tildeএবং uml)। উচ্চারণের নামটি ছোট হাতের অক্ষরে থাকতে হবে ! *
  • কোন এইচটিএমএল অস্তিত্বের একটি অক্ষর যে তালিকাতে নেই উৎপন্ন, বা যে অবৈধ, অস্পৃষ্ট রাখতে হবে (যেমন: &, &etilde;, &a;)
  • সংখ্যা সত্তা উপেক্ষা করা উচিত, যেহেতু তারা উপরের নিয়মগুলিতে ফিট করে না

এই পরিবর্তনটি 18-02-2016 হিসাবে চালু হয়েছিল। বড় আকারের অ্যাকসেন্ট নাম সহ HTML সত্তাগুলি গ্রহণ করে এমন সমস্ত বিদ্যমান উত্তর বৈধ valid ভবিষ্যতের যে কোনও উত্তর অবশ্যই এই বিধি অনুসরণ করবে।

উদাহরণ:

á //á
Téhèh //Téhèh
an & //an &

আউটপুট:

আউটপুট আইএসও -8859- এক্স (1-15), উইন্ডোজ -1222 বা ইউটিএফ -8 / 16/32 এ থাকতে পারে ।
আপনি বৈধ এনকোডিংগুলির মধ্যে একটি এবং একটি বেছে নিতে পারেন এবং এটি কোনও আউটপুট ব্যবহার করতে পারেন । আপনি নিরাপদে ধরে নিতে পারেন যে ইনপুটটি ASCII তে থাকবে।

নিম্নলিখিতগুলির মধ্যে কোনওটির জন্য একটি বৈধ আউটপুট á:

  • á(আইএসও -8859-1 / 15 বা উইন্ডোজ-1252, সমতুল্য \xE1)
  • áইউনিকোড (UTF-8, সমতূল্য \xC3\xA1বা \u00E1)
  • ইউনিকোড (UTF-8, সমতূল্য a\xCC\x81বা a\u0301)
  • এইচটিএমএল সত্তা ব্যবহার না করে ডায়াক্রিটিক্সের যে কোনও সমন্বয়।

তালিকার অক্ষরগুলিতে আউটপুটটি দৃশ্যত অনুরূপ হতে হবে, যখন রেন্ডার / প্রদর্শিত হয়।


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

* এই পরিবর্তনটি বোনাস এবং জরিমানার দুর্দান্ত অনুমোদনের কারণে করা হয়েছিল এবং লেখার সময় কোনও উত্তর অকার্যকর করে না


4
আমি ভোট দিই নি, তবে আমি ধারণা করি ডাউনভোটগুলি হ'ল কারণ লোকেরা সত্যই বোনাস / জরিমানা পছন্দ করে না - তারা শেষ পর্যন্ত কয়েকটি চ্যালেঞ্জকে একটি চ্যালেঞ্জ তৈরি করে into
কেভিন ডব্লিউ।

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

1
আইএমএইচও, বোনাসগুলি নির্বিচারে মনে হয় - হয় অনুমতি দিন বা অনুমতি দিন না, এর মধ্যে যাবেন না।
অ্যাডিসন ক্র্যাম্প

1
@ ইসমাইল মিগুয়েল আমি কোনও বোনাস / জরিমানার পরামর্শ দিচ্ছি না - তারা যে প্রোগ্রামিং পদ্ধতি ব্যবহার করতে চান তা অবশ্যই অনুমতি দিন (অবশ্যই স্ট্যান্ডার্ড লুফোলগুলির বাইরে) এবং বোনাস / জরিমানা অপসারণ করুন।
অ্যাডিসন ক্রম্প

2
@ ইসমাইল মিগুয়েল নাহ - এটি আমার সেন্ট ছিল। সি:
অ্যাডিসন ক্র্যাম্প

উত্তর:


4

জাপট, 81 75 বাইট

Ur`&([%vYy](ac©e|uml)|%v(g?ve|circ)|[AaOo]Èìe);`@Yg +'Ì+"?????"g"gutca"bYgJ

ছয়টি ?অচিহ্নিত অক্ষর উপস্থাপন করে। এটি অনলাইন পরীক্ষা!

দ্রষ্টব্য: এটি তৃতীয় এনকোডিং বিকল্পটি আউটপুট করে; এটি হ'ল চিঠিটি এর সাথে সম্মিলিত ডায়ক্রিটিক্যাল চিহ্নের কাঁচা UTF-8 এনকোডিংয়ের পরে।

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

Ur"&(    );"       // Replace each ampersand and semicolon that have one of these between them:
([%vYy](acute|uml) //  A vowel or Yy followed by "acute" or "uml",
|%v(grave|circ)    //  or a vowel followed by "grave" or "circ",
|[AaOo]tilde       //  or "a" or "o" followed by "tilde";
@                  // replace each match X and its middle Y with this function:
""g"gutca"bYgJ     //  Take the unprintable at index (index of the second char in Y in "gutca") in this string.
Yg +'Ì+            //  Concatenate the first char in Y and "Ì" to the beginning.
                   // Implicit output

কোডের হেক্সডাম্প:

00000000: 55 72 60 26 28 5b 25 76 59 79 5d 28 61 63 a9 65  Ur`&([%vYy](ac©e
00000010: 7c 75 6d 6c 29 7c 25 76 28 67 9f 76 65 7c 63 69  |uml)|%v(g.ve|ci
00000020: 72 63 29 7c 5b 41 61 4f 6f 5d c8 ec 65 29 3b 60  rc)|[AaOo]Èìe);`
00000030: 40 59 67 20 2b 27 cc 2b 22 80 81 82 83 88 22 67  @Yg +'Ì+"....."g
00000040: 22 67 75 74 63 61 22 62 59 67 4a                 "gutca"bYgJ

মনে হচ্ছে এটি সুন্দরভাবে কাজ করছে। আপনি কি দয়া করে হেক্সডাম্প সরবরাহ করতে পারেন? আপনার কাছে এমন কিছু "অদ্ভুত" অক্ষর রয়েছে যা প্রতিটি এনকোডিংয়ে নাও লাগতে পারে।
ইসমাইল মিগুয়েল

@ ইসমাইল মিগুয়েল আমি ঠিক বুঝতে পেরেছি যে অ্যাকসেন্টগুলি আইএসও -8859-1 এনকোডিংয়ের অংশ নয়; এইভাবে, আমি স্ট্রিংটি সঙ্কুচিত করে ইউটিএফ -8 বাইটে স্যুইচ করেছি। আপনি কি এখনও হেক্সডাম্প পছন্দ করতে চান?
ETH প্রোডাকশনগুলি

আপনার উপর নির্ভর করে তবে আপনার আগের সমাধানটি পুরোপুরি ঠিক ছিল।
ইসমাইল মিগুয়েল

আমার মনে হয় আপনি সেখানে একটি ক্ষুদ্র বাগ থাকতে পারে, আপনার কোড ছেড়ে বলে মনে হয় Ýএকা, কিন্তু এটা y এর পরিবর্তন করা উচিত ...
daavko

@ দাভকো ওফস, আপনি ঠিক বলেছেন! এখনই স্থির।
ETH প্রোডাকশন

12

জাভাস্ক্রিপ্ট (ES6), 141 122 134 বাইট

a=>a.replace(/&([aeiouyAEIOUY](acute|uml)|[aeiouAEIOU](grave|circ)|[aoAO]tilde);/g,b=>b[1]+{g:"̀",a:"́",c:"̂",t:"̃",u:"̈"}[b[2]])

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

সম্পাদনা: নিল অপরিজ্ঞাত কিছু খারাপ মামলা করেছে, যা এখন ঠিক করা হয়েছে।


দেখা? আমি আপনাকে বলেছিলাম যে আপনি কিছু মেদ কাটাতে পারে! এটি সত্যিই অবাক করা উত্তর! আমি সত্যিই আশা করি আপনি আরও +1 পাবেন
ইসমাইল মিগুয়েল

1
এটা ঠিক চালাক। +1
ইয়াতসি

আমি এটা ভালোবাসি..! String.prototype.replaceস্ট্রিং ট্রভারসাল জন্য হাস্যকরভাবে গল্ফযোগ্য।
আর্চানথ

আমি নিশ্চিত নই যে এটি É(সঠিক জিনিসটি যাই হোক না কেন) এর জন্য সঠিক জিনিসটি করে।
নিল

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

10

রেটিনা , 115 বাইট

আমি কোড-গল্ফে নতুন, তবে আমি মনে করি এটি কার্যকর হতে পারে।
এই সংস্করণটি নিয়মের আগে তৈরি হয়েছিল, যা বড় হাতের এইচটিএমএল সত্তাগুলি (উদাহরণস্বরূপ Á) প্রবর্তন করার অনুমতি দেয় না ।

i`&([aeiouy])acute;
$1́
i`&([aeiou])grave;
$1̀
i`&([ao])tilde;
$1̃
i`&([aeiou])circ;
$1̂
i`&([aeiouy])uml;
$1̈

বেশ সহজ অনুসন্ধান এবং প্রতিস্থাপন। ইউটিএফ -8 ব্যবহার করে।

[চিঠি] \ xCC \ x [ডায়াক্রিটিকাল মার্ক হেক্স কোড] পদ্ধতির ব্যবহার করে। প্রতিটি প্রাসঙ্গিক চিঠির পরে ডায়াক্রিটিকাল চিহ্ন যুক্ত করা হয়।

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

এখানে একটি 129 বাইট সংস্করণ রয়েছে, যা বড় হাতের এইচটিএমএল এনটাইটগুলি প্রতিস্থাপন করে না (উদাহরণস্বরূপ Á)

&([aeiouyAEIOUY])acute;
$1́
&([aeiouAEIOU])grave;
$1̀
&([aoAO])tilde;
$1̃
&([aeiouAEIOU])circ;
$1̂
&([aeiouyAEIOUY])uml;
$1̈

এটি অনলাইন চেষ্টা করুন!
এটি অনলাইন চেষ্টা করুন! 129-বাইট সংস্করণ


সেখানে চিহ্নের দুর্দান্ত ব্যবহার। বিশ্বাস করতে পারছি না আমি প্রথমে এর চেয়ে কম হওয়ার কথা ভাবিনি> _ <
Mwr247

@ Mwr247 ধন্যবাদ! আমি এটি করার একটি উপায় অনুসন্ধান করছিলাম, যেহেতু আমি এটি করার চেষ্টা করতে চেয়েছিলাম এবং চিহ্নগুলি কোথাও প্রদর্শিত হয়েছিল ... আমি সত্যিই অবাক হয়েছি এটি এত ছোট short
দাভকো

1
দুর্দান্ত ফেয়ার-প্লে এবং নিয়মের ব্যবহার! আমি এই ভাষাটি কখনই পছন্দ করি না, তবে আমি এই উত্তরটি সত্যিই ভালবাসি। তাত্ক্ষণিক +1
ইসমাইল মিগুয়েল

আমি 115 বাইট গণনা করেছি (চিহ্নগুলির জন্য 110 টি অক্ষর + 5 অতিরিক্ত বাইট)।
Mwr247

@ Mwr247 ওহ, আপনি ঠিক বলেছেন। আমি এটিকে কেবল একটি পাঠ্য নথিতে আটকালাম এবং দৌড়ে এলএস-এল চালিয়েছি এবং এটি 116 দেখিয়েছে ... সম্ভবত সম্পাদকটি একটি অতিরিক্ত নতুন লাইন যুক্ত করেছেন। আমি এটা ঠিক করব.
দাভকো

3

জাভাস্ক্রিপ্ট (ES6), 288 বাইট

a=>(z=(b,c=1,d=2,e=3,f=0,g=4)=>({b:b+191,grave:c,acute:d,circ:e,tilde:f,uml:g}),y={a:z(0,1,2,3,4,5),e:z(8),i:z(12),o:z(18,1,2,3,4,5),u:z(25),y:z(28,0,2,0)},a.replace(/&\w+;/gi,b=>(x=y[b[1].toLowerCase()])&&(w=x[b.slice(2,-1)])?String.fromCharCode(x.b+w+32*(b[1]>'_')+153*/Yu/.test(b)):b))

একটি অক্ষর মানচিত্র অবজেক্ট তৈরি করে (প্রতিটি অক্ষরের বেস সংখ্যাযুক্ত কোড সহ) এবং কোনও সত্তা রূপান্তরিত করা উচিত এবং এটির অক্ষর কোডটি কী তা নির্ধারণ করতে অফসেটগুলি (বা 0 অস্তিত্বহীন) ব্যবহার করে। ক্ষেত্রে প্রতিসাম্য অর্থ হ'ল লোয়ারকেসগুলি বাদে 32 যোগ করা &Yuml;, যেখানে এটি ইউটিএফ 8 এর জন্য আলাদা অফসেট ব্যবহার করে।


নিস! আমি আপনার অ্যাপ্রোচটি সত্যিই পছন্দ করি তবে ২৮6 বাইট কিছুটা দীর্ঘ। কিছু জিনিস আছে যা কেটে ফেলা যায়? কিছু ফ্যাট ছাঁটাই দুর্দান্ত হবে
ইসমাইল মিগুয়েল

@ ইসমাইল মিগুয়েল ২৮৮ আসলে; আমি কেবল বুঝতে পেরেছি যে &Yuml;ইউটিএফ 8 এ আসলে একটি আছে: এটি কেবল একটি অদ্ভুত জায়গায়। সব মিলিয়ে, আমি ভেবেছিলাম যে আমি এটি আরও ভালভাবে সংশ্লেষিত করেছি এবং এটি অপ্টিমাইজ করেছি, আক্ষরিক প্রতিস্থাপনের তালিকাটি বিবেচনা করে দ্বিগুণ হয়ে যাবে। তুমি কি এমন কিছু দেখছ যা আমি না?
Mwr247

আসলেই নয় ... ব্যবহারের চেয়ে ছোট হাতের অক্ষরগুলি তৈরি করার আরও ভাল উপায় থাকতে হবে .toLowerCase()। এই নামটি বিশাল! এছাড়াও, String.fromCharCodeএকাধিক প্যারামিটার গ্রহণ করতে পারে, বা হিসাবে বলা যেতে পারেString.fromCharCode.call([...])
ইসমাইল মিগুয়েল

1
@ ইসমাইল মিগুয়েল মনে হয় এটির একটি পুনর্লিখনের প্রয়োজন আমার সম্পর্কে ঠিকই ছিল তবে এটির অন্য কেউ হওয়া দরকার বলে ভুল ছিল। আমি এই উত্তরটি আরও আকর্ষণীয় বলে মনে করি তবে অন্যটিটি প্রযুক্তিগতভাবে আরও সংক্ষিপ্ত, তাই আমি উভয়কে আলাদাভাবে অন্তর্ভুক্ত করেছি।
Mwr247

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