ইমোটিকানের মুখের অভিব্যক্তি স্বীকৃতি


25

এমন একটি প্রোগ্রাম লিখুন যা ইমোটিকনকে ইনপুট হিসাবে গ্রহণ করে এবং ইমোটিকন খুশি বা দুঃখ পেলে আউটপুট দেয়।

প্রোগ্রামটি ইনপুট বা প্যারামিটার হিসাবে একটি স্ট্রিং গ্রহণ করে এবং ইনপুটটি সুখী ইমোটিকন তালিকায় থাকলে "হ্যাপি" বা ইনপুটটি দু: খিত ইমোটিকন তালিকায় থাকলে "দু: খিত" স্ট্রিংটি প্রদর্শন করা উচিত।

আপনি ধরে নিতে পারেন ইনপুটটি সর্বদা একটি বৈধ (সুখী বা দু: খিত) ইমোটিকন, এর আশেপাশে কোনও স্থান বা ট্যাব নেই।

এখানে খুশি ইমোটিকনের একটি স্থান পৃথকীকরণ তালিকা:

:-) :) :D :o) :] :3 :c) :> =] 8) =) :} :^) :-D 8-D 8D x-D xD X-D XD =-D =D =-3 =3 B^D (-: (: (o: [: <: [= (8 (= {: (^:

এখানে দু: খিত ইমোটিকনের একটি স্থান পৃথকীকরণ তালিকা:

>:[ :-( :( :-c :c :-< :< :-[ :[ :{ 8( 8-( ]:< )-: ): >-: >: ]-: ]: }: )8 )-8

এটি কোড-গল্ফ, তাই সংক্ষিপ্ততম প্রোগ্রামটি জয়ী।


1
আপনি ভুলে গেছেন :'D, :')(খুশি) এবং :@(রাগান্বিত)
ইসমাইল মিগুয়েল

উত্তর:


19

পাইথন, 86 বাইট

আমাকে কারাগারে প্রেরণ করা উচিত।

x=lambda c: ["happy","sad"][c[0]+c[-1:]in open(__file__).read(88)[::-1]]#<][><:>{:}(:)

আমি যতটা সংক্ষিপ্ততম সামনে আসতে পেরেছিলাম তা মার্টিনের সিজেএম উত্তরের সমতুল্য, তাই আমি স্থির করেছিলাম যে আমি আমার কোডের বিপরীতে সমস্ত দু: খিত ইমোজিগুলি (যদি মাঝের চরিত্রটি না হয়) __file__আড়াল করে পাইথনের কুইন প্রতারণা ব্যবহার করি ।

Muahahaha।


খুব ভালভাবে চিন্তা
edc65

প্রকৃতপক্ষে, এখন আমি আপনার কোডটি দেখছি, কোলনের সাহায্যের পরে স্থানটি সরিয়ে ফেলবে যা কিছু সাহায্য করবে, বা এটি কেবল প্রোগ্রামটি ভেঙে দেবে?
বিটা ক্ষয়

6
আমি পছন্দ করি যে প্রোগ্রামটির নিজস্ব ইমোটিকন রয়েছে:c:
অ্যালেক্স এ।

@ বেটাডেকে দিন এটি ভেঙে ফেলবেন hehh
cjfaure

1
@AlexA। এটি এগুলিও রয়েছে, যদি আপনি মনোযোগ সহকারে দেখুন:8) (8 :] [:
সিজেফুরে

16

সিজেম, 33 32 বাইট

1 বাইট সঞ্চয় করার জন্য ডেনিসকে ধন্যবাদ।

q)"[(c<{"&\"])>}"&|"sad""happy"?

দেখে মনে হচ্ছে কোনও রেজেক্স ছাড়াই একই জিনিস করা আরও কম ...

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

এটি রেটিনা উত্তরের মতো একই পর্যবেক্ষণের ভিত্তিতে, তবে এবার সুখী মুখগুলির সাথে মেলে কোনও লাভ নেই, সুতরাং আমরা এর পরিবর্তে দু: খিত মুখগুলি মিলিয়ে নেব (কারণ অ্যাকাউন্টটি গ্রহণের জন্য আর একটি মুখ নেই)। সমাধানটি অন্যথায় হুবহু সমান, তা বাদে এটি রেজেক্সের প্রতিস্থাপনের মাধ্যমে প্রয়োগ করা হয়নি:

q)             e# Read input and split off last character.
"[(c<{"&       e# Set intersection with the sad right-hand mouths.
\              e# Pull up remaining emoticon.
"])>}"&        e# Set intersection with the sad left-hand mouths.
|              e# Set union, which amounts to a logical OR in this case.
"sad""happy"?  e# Pick the correct string.

7
ওহো, আমাদের বাকী সবাইকে একটি সুযোগ দিন মার্টিন: ডি
বিটা ডিকায়

10

রেটিনা , 38 36 বাইট

.+[])D3>}]|[<[({].+
happy
^...?$
sad

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

সুতরাং সুখী মুখগুলির জন্য বৈধ মুখগুলি ] ) D 3 > }ডান বা < [ ( {বাম দিকে রয়েছে। আমরা তাদের সাথে মেলে .+[])D3>}]|[<[({].+এবং তাদের সাথে প্রতিস্থাপন করি happy। যদি আমরা মেলে না তবে স্ট্রিংয়ে (ইমোটিকন) দুটি বা তিনটি অক্ষর থাকবে, তবে আমরা যদি সেখানে থাকি তবে পাঁচটি ( happy) থাকবে। সুতরাং একটি দ্বিতীয় ধাপে আমরা দুটি বা তিনটি অক্ষর এর সাথে প্রতিস্থাপন করি sad


We can recognise all emoticons by their mouths, because none of the mouths is used as a hat.ঠিক আছে, ]:<ইমোটিকন মুখটি কেবল টুপি হিসাবে ব্যবহার করে।
লুভজো

.আমার উত্তরে "টুপি" পরে আর নেই লুভজো ;) "... অন্য সেটে টুপি বা চোখ হিসাবে (কেবল একই সেটে)।
মার্টিন ইন্ডার

8

জাভাস্ক্রিপ্ট (ES6), 46

দু: খিত ইমোটিকনগুলি সন্ধান করার জন্য একটি রেজিএক্সপ্যাক ব্যবহার করা, এটিই শুরু >)]}বা শেষ হয় <([{c। পার্শ্ব দ্রষ্টব্য: এখানে অন্যান্য রেজিক্সগুলি সংক্ষিপ্ত হতে পারে তবে আমি সেগুলি বোঝার বিষয়ে নিশ্চিত নই।

সাধারণ নোট: যে কোনও ইকামাস্ক্রিপ্ট 6 অনুবর্তী ব্রাউজারে স্নিপেট চলমান পরীক্ষা (উল্লেখযোগ্যভাবে নতুন ক্রোম নয় তবে এমএসআইই নয় । আমি ফায়ারফক্সে পরীক্ষা করেছি, সাফারি 9 যেতে পারে)

বড় খবর মনে হচ্ছে তীরের ক্রিয়াগুলি অবশেষে ক্রোম ল্যান্ডে পৌঁছেছে! Rel 45, আগস্ট 2015

F=s=>/^[\])}>]|[[({<c]$/.test(s)?'sad':'happy'

//Same length
X=s=>/[\])}>].|.[[({<c]/.test(s)?'sad':'happy'

Y=s=>s.match`].|[)}>].|.[[({<c]`?'sad':'happy'
                 
//TEST
out=x=>O.innerHTML+=x+'\n';

sad='>:[ :-( :( :-c :c :-< :< :-[ :[ :{ 8( 8-( ]:< )-: ): >-: >: ]-: ]: }: )8 )-8'.split` `
happy=':-) :) :D :o) :] :3 :c) :> =] 8) =) :} :^) :-D 8-D 8D x-D xD X-D XD =-D =D =-3 =3 B^D (-: (: (o: [: <: [= (8 (= {: (^:'.split` ` 

out('The sad faces')                   
sad.forEach(x=>out(x + ' is ' + F(x)))
out('\nThe happy faces')
happy.forEach(x=>out(x + ' is ' + F(x)))
<pre id=O></pre>


ক্রোমে দুর্দান্ত কাজ করে
গ্লিসারিন

3
@ গ্লিসারিন এখন কি ক্রোম চিনবে =>? আমি সেই সংবাদটি মিস করেছি
edc65

4

জুলিয়া, 87 69 বাইট - অ্যালেক্স এ এর ​​18 টি বাইট সংরক্ষণ করে

s=readline();print(s[end-1] in")D]3>}"||s[1] in"([<{"?"happy":"sad")

2
আপনি if/ এর পরিবর্তে একটি টার্নারি ব্যবহার করে elseএবং printবরাদ্দ না দেওয়া এড়াতে টের্নারিটি ভিতরে রেখে গুচ্ছ সংরক্ষণ করতে পারেন t
অ্যালেক্স এ।

4

পাইথন 3 , 77 75 74 72 61 55 বাইট

lambda e:('happy','sad')[e[-1]in'[(c<{'or e[0]in'])>}']

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

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

যদি কোনও মুখের স্ট্রিং শুরু হয় ])>}বা শেষ হয় [(c<{তবে তা দুঃখজনক, অন্যথায় এটি খুশি। টুপল ইনডেক্সিং হিসাবে ব্যবহৃত হয় if


1
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম!
ডেনিস

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

3

ব্র্যাচল্যাগ , 50 বাইট

(rh{,"[(c<{":Im?};?h{,"])>}":Im?}),"sad".;"happy".

ব্যাখ্যা

(                              ),"sad".;"happy".  § If what's in the parentheses is true,
                                                  § output "sad", else output "happy".

 rhA                                              § Unify A with the last char of the input
    ,"[(c<{":ImA                                  § True if A is a char of "[(c<{"
                ;                                 § OR
                 ?hA                              § Unify A with the first char of the input
                    ,"])>}":ImA                   § True if A is a char of "])>}"

2

পাইথন, 159 বাইট।

i,e=raw_input(),0
for c in i:e=(e,i.index(c))[c in":=8xXB"]
f,s,h=i[:e],i[e+1:],0
for c in f:h+=c in"[(c<{"
for c in s:h+=c in")]}>D"
print["Sad","Happy"][h>0]

2

ম্যাটল্যাব, 85 83 বাইট

আকারটি হ্রাস করার একটি উপায় অবশ্যই এখানে রয়েছে।

e=input('');if any([e(end)=='[(c<{',e(1)=='])>}']),'sad';else 'happy';end,disp(ans)

ইনপুট একটি হাসিখুশি স্ট্রিং। এটি দুঃখজনক কিনা তা নির্ধারণের সাথে প্রথম এবং শেষের অক্ষরগুলির সাথে তুলনা করা হবে। যদি না হয়, এটি খুশি।

আমি দুটি প্রদর্শন না করে দুটি বাইট সংরক্ষণ করতে সক্ষম হয়েছি, তবে তাদের পরিবর্তে ম্যাটল্যাবের ডিফল্ট ভেরিয়েবল (আনস) এফাইটিউট করে এবং তারপরে if-বিবৃতি পরে উত্তরগুলি প্রদর্শন করে ans তবে আমি নিশ্চিত যে এটি কোনওভাবে উন্নত হতে পারে।

2 পরিবর্তন করে উন্নতি বাইট ফাংশন গুলি (ঙ), থেকে E = ইনপুট ( '');


1

পাওয়ারশেল, 92 বাইট

param([char[]]$a)if("<[({".IndexOf($a[0])+"})D3]>".IndexOf($a[-1])-eq-2){"sad"}else{"happy"}

সামান্য শব্দযুক্ত, কিন্তু বোনাস হিসাবে, এটি রিজেক্স ব্যবহার করে না!

এটি .NET <string>.IndexOf()ফাংশনটির সুবিধা নেয় -1যা অক্ষরে স্ট্রিংয়ের সন্ধান না পাওয়া থাকলে ফিরে আসে । সুতরাং, যদি প্রথম চরিত্রটি "সুখী" চরিত্র IndexOf()না হয় তবে প্রথমটিটি -1 হবে - একইভাবে শেষ চরিত্রটির জন্য। সুতরাং, যদি এটি একটি দু: খিত মুখ আছে, IndexOf()গুলি সবসময় -2 সমষ্টি হবে, যার অর্থ -eq-2হল $TRUE, এবং এইভাবে sadমুদ্রিত হয়।


বোনাস ভেরিয়েন্ট: রেগেক্সের সাথে পাওয়ারশেল, 95 বাইট

param([char[]]$a)if(($a[0]-match"[<\[\(\{]")-or($a[-1]-match"[\}\)D3\]>]")){"happy"}else{"sad"}

1

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

lambda y:"sad"if re.match("(.*[[(c<{]$)|(^[\])>}])",y)else"happy"
import re

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

রেজেক্স আমদানি এটিকে কিছুটা দীর্ঘ করে তোলে, সেই সাথে Noneঅ্যারে সূচক হিসাবে ব্যবহার করতে অক্ষম । তবে আমি রেইগেক্স পছন্দ করি :)


1

জাভা 8, 52 বাইট

e->e.matches(".+[\\[(c<{]|[)>\\]}].+")?"sad":"happy"

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

ব্যাখ্যা:

e->          // Method with String as both parameter return-type
  e.matches( ".+[\\[(c<{]|[)>\\]}].+")                   
             //  Checks if the input matches the regex
   ?"sad"    //  If it does: output "sad"
   :"happy"  //  Else: output "happy"

জাভার String#matchesপরোক্ষভাবে যোগ ^...$সমগ্র স্ট্রিং মেলে, যার কারণে এটি খাটো খুশি মুখ পরীক্ষণ পরিবর্তে দু: খিত মুখমন্ডল জন্য চেক করতে অন্যান্য অধিকাংশ উত্তর মত না .+[\\])D3>}]|[<\\[({].+(কারণ আমার Regex মধ্যে ব্যর্থ হবে @MartinEnder এর অক্ষিপট উত্তর কারণে, উদাহরণস্বরূপ খুশি পরীক্ষার কেস :c)))

রেজেক্স ব্যাখ্যা:

^.+[\\[(c<{]|[)>\\]}].+$
^                           Start of the string
 .+                          One or more characters,
   [\\[(c<{]                 followed by one of "[(c<{"
            |               Or
             [)>\\]}]        One of ")>]}",
                     .+      followed by one or more characters
                       $    End of the string
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.