কাউন্টার কাউন্টার


18

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

আপনার ইনপুট:

  • কমান্ড লাইন ইনপুট হতে পারে বা এসটিডিএন হতে পারে তবে আপনাকে অবশ্যই কোনটি নির্দিষ্ট করতে হবে।

  • সম্পূর্ণ মুদ্রণযোগ্য ASCII অক্ষর সমন্বিত থাকবে, যার অর্থ 32 এবং 126 এর মধ্যে সমস্ত ASCII মান রয়েছে। এর মধ্যে স্পেস অন্তর্ভুক্ত রয়েছে। অধিক তথ্য.

এখন, এটি ফন্টগুলির মধ্যে কিছুটা পৃথক হয়। উদাহরণস্বরূপ, আপনি যে ফন্টটি পড়ছেন তা 'g' কে একটি বন্ধ কাউন্টার হিসাবে বিবেচনা করে, অন্যদিকে গুগল ফন্টে দুটি বন্ধ কাউন্টার সহ 'g' রয়েছে। যাতে এটি কোনও সমস্যা নয়, এখানে চরিত্র অনুসারে বন্ধ কাউন্টারগুলির সরকারী সংখ্যা are

কোনও বন্ধ কাউন্টার ছাড়াই সমস্ত প্রতীক:

 !"'()*+,-./12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\]^_`cfhijklmnrstuvwxyz{|}~

মনে রাখবেন যে এর মধ্যে স্থান অন্তর্ভুক্ত রয়েছে।

এখানে একটি বদ্ধ কাউন্টার সহ সমস্ত চিহ্ন রয়েছে:

#0469@ADOPQRabdegopq

এবং এখানে 2 টি বন্ধ কাউন্টার সহ সমস্ত প্রতীক রয়েছে:

$%&8B

এবং সর্বশেষে তবে সর্বনিম্ন নয়, এখানে কিছু নমুনা ইনপুট এবং আউটপুট রয়েছে।

Programming Puzzles and Code-Golf মুদ্রণ করা উচিত 13

4 8 15 16 23 42 মুদ্রণ করা উচিত 5

All your base are belong to us মুদ্রণ করা উচিত 12

Standard loopholes apply মুদ্রণ করা উচিত 12

Shortest answer in bytes is the winner! মুদ্রণ করা উচিত 8


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

আপনি কাউন্টারগুলি গণনা করার জন্য কোনটি যাচ্ছেন তা প্রকাশ করতে আপনার আপত্তি হবে?
মার্টিন এন্ডার

3
আমি প্রশ্নটিতে যে ফন্টটি দেখছি তার কোনওটিই আপনার দেওয়া গণনার সাথে মিল নয়। ব্রাউজারে যেমন শূন্যের একটি তির্যক স্ল্যাশ থাকে যার মাধ্যমে দুটি কাউন্টার দেওয়া হয়। অ্যান্ড্রয়েড অ্যাপে ফন্টটি দেয় না তবে এখানে gদুটি বন্ধ কাউন্টার রয়েছে। আপনি কোনও নির্দিষ্ট ফন্টের ভিত্তিতে কাউন্টারগুলি নির্ধারণ করেছেন?
মার্টিন ইন্ডার

1
@ ডিজেএমসিএমহেমের 'জি' এর 1 টি আছে; যদিও কোডে তালিকাভুক্ত রয়েছে, gএতে 2 রয়েছে সামান্য বিভ্রান্তিকর, তবে আমি মনে করি এটি স্থান অনুসারে আলাদা নয়।
ওজেফোর্ড

1
না 0নির্দিষ্ট ফন্ট, বিশেষ করে অনেক মোনোস্পেস ফন্ট 2 বদ্ধ কাউন্টারে আছে?
বনাম

উত্তর:


10

পাইথ, 31 বাইট

sm@tjC"cúÁ-ÈN%³rØ|­"3Cdz

প্রদর্শন.

নোট করুন যে ASCII বিহীন অক্ষর ব্যবহারের কারণে কোডটি সঠিকভাবে প্রদর্শিত হতে পারে না। সঠিক কোডটি লিঙ্কে রয়েছে।

আমি প্রতিটি ইনপুট অক্ষরের জন্য পছন্দসই আউটপুটটির একটি সারণী তৈরি করেছিলাম, পাইথের মডিউলার ইনডেক্সিংটি ব্যবহার করতে 32 দ্বারা এটি ঘোরালাম, শুরুতে একটি 1 আটকেছি এবং সংখ্যাটি প্রদান করে এটি একটি বেস 3 নম্বর হিসাবে ব্যাখ্যা করেছি 2229617581140564569750295263480330834137283757। আমি তখন এই সংখ্যাটি বেস 256 এ রূপান্তর করে একটি স্ট্রিংয়ে রূপান্তর করি, যা উত্তরে ব্যবহৃত স্ট্রিং।


29

পাইথন 3, 63

print(sum(map(input().count,"#0469@ADOPQRabdegopq$%&8B$%&8B")))

একটি সরল পদ্ধতি। দুটি বদ্ধ কাউন্টার সহ অক্ষরের জন্য দু'বার করে এমন সংঘটন সংখ্যার সংমিশ্রণ, একটি বন্ধ কাউন্টার সহ প্রতিটি চরিত্রের উপরে আইট্রেট করে। পরিবর্তে লেখার জন্য এটি একই দৈর্ঘ্য হবে

"#0469@ADOPQRabdegopq"+"$%&8B"*2

পাইথন 3 এড়াতে প্রয়োজন raw_input


12

সিজেম, 41 39 37 34 বাইট

"$%&8Badopq#0469@Rbeg"_A<eu+qfe=1b

3 বাইট বন্ধ করে গল্ফ করার জন্য @ জিমি 23013 কে ধন্যবাদ!

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

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

"$%&8Badopq#0469@Rbeg"             e# Push that string.
                      _A<          e# Retrieve the first 10 characters.
                         eu+       e# Convert to uppercase and append.
                                   e# This pushes "$%&8Badopq#0469@Rbeg$%&8BADOPQ".
                            q      e# Read from STDIN.
                             fe=   e# Count the occurrences of each character. 
                                1b e# Base 1 conversion (sum).

2
"$%&8Badopq#0469@Rbeg"_A<eu+
জিমি 23013

@ জিমি ২৩০১৩: আমি কয়েকটি প্রকারের চেষ্টা করেছি euএবং elতা আমি পাইনি। ধন্যবাদ!
ডেনিস

8

সেড, 51

@ মান্যাটওয়ার্ক এবং @ টবিস্পাইট থেকে গল্ফিং সাহায্যের সাহায্যে:

s/[$%&8B]/oo/g
s/[^#0469@ADOPQRabdegopq]//g
s/./1/g

এসটিডিএন থেকে ইনপুট। সঙ্গে মনের মধ্যে এই মেটা-প্রশ্ন , আউটপুট ইউনারী রয়েছে:

$ echo 'Programming Puzzles and Code-Golf
4 8 15 16 23 42
All your base are belong to us
Standard loopholes apply
Shortest answer in bytes is the winner!' | sed -f countercounter.sed
1111111111111
11111
111111111111
111111111111
11111111
$ 

7

পার্ল, 41

$_=y/#0469@ADOPQRabdegopq//+y/$%&8B//*2

41-pপতাকার জন্য অক্ষর +1 ।

অক্ষর গণনা করতে এটি y /// ব্যবহার করে।

echo 'Programming Puzzles and Code-Golf' | perl -pe'$_=y/#0469@ADOPQRabdegopq//+y/$%&8B//*2'

6

জিএনইউ এপিএল, 39 বাইট

+/⌈20÷⍨26-'$%&8B#0469@ADOPQRabdegopq'⍳⍞

এটি GNU APL.js এ অনলাইনে ব্যবহার করে দেখুন

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

                                      ⍞ Read input.
          '$%&8B#0469@ADOPQRabdegopq'⍳  Compute the indexes of the input characters
                                        in this string. Indexes are 1-based.
                                        26 == 'not found'
       26-                              Subtract each index from 26.
   20÷⍨                                 Divide those differences by 20.
  ⌈                                     Round up to the nearest integer.
+/                                      Add the results.

6

জাভাস্ক্রিপ্ট, 86

পপআপের মাধ্যমে আই / ও। পরীক্ষা করতে সাম্প্রতিক যে কোনও ডি ব্রাউজারে স্নিপেট চালান ।

for(c of prompt(t=0))c='$%&8B#0469@ADOPQRabdegopq'.indexOf(c),~c?t+=1+(c<5):0;alert(t)


6

কে, 54 43 42 37 বাইট

+//(30#"$%&8B#0469@ADOPQRabdegopq"=)'

@ জনকে ধন্যবাদ 5 টি বাইট কাটা!

পুরানো সংস্করণ:

f:+/(#&"#0469@ADOPQRabdegopq$%&8B$%&8B"=)'

মূল:

f:+/{2-(5="$%&8B"?x;20="#0469@ADOPQRabdegopq"?x;0)?0}'

#&পেরেনগুলির অভ্যন্তরটি কেবল সহজেই হতে পারে +/যার অর্থ আপনি আরও এগিয়ে যেতে পারেন +//"#0469@ADOPQRabdegopq$%&8B$%&8B"=\:। পরিশেষে, f:ফাংশনটি স্বরূপ আকারে ব্যবহার করা যেতে পারে তাই এটি থাকা দরকার নেই। এটি আপনাকে 38 এ নামিয়ে আনবে!
19

দুর্ভাগ্যক্রমে কয়েক অন্যান্য সমাধান যে কৌশলটি অনুসন্ধানের টেবিলটি সংহত করার জন্য নিযুক্ত করেছে তা বর্তমান 38 বাইট সমাধানের সাথে মরেও আসে +//(30#"$%&8B#0469@ADOPQRabdegopq")=\:। এটি আমরা করতে পারি সেরা হতে পারে।
জন

+//(30#"$%&8B#0469@ADOPQRabdegopq"=)'
হাহাহা,

5

সি, 127 বাইট

n;f(char*i){char*o="#0469@ADOPQRabdegopq",*t="$%&8B";for(;*i;i++)if(strchr(o,*i))n++;else if(strchr(t,*i))n+=2;printf("%d",n);}

অনেকটাই অকপট. অবরুদ্ধ সংস্করণ:

int num = 0;
void f(char* input)
{
    char *one="#0469@ADOPQRabdegopq";
    char *two="$%&8B";

    for(;*input;input++)
        if(strchr(one, *input))     //If current character is found in first array
            num ++;
        else if(strchr(two, *input))//If cuurent character is found in second array
            num += 2;

    printf("%d", num);
}

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

যদি ফাংশন যুক্তিগুলির অনুমতি না দেওয়া হয় তবে stdinসংস্করণটি 141 বাইট পর্যন্ত লাগে:

n;f(){char*o="#0469@ADOPQRabdegopq",*t="$%&8B",i[99],*p;gets(i);for(p=i;*p;p++)if(strchr(o,*p))n++;else if(strchr(t,*p))n+=2;printf("%d",n);}

নোট করুন যে উপরের সংস্করণটি ধরেছে যে ইনপুটটি প্রায় 98 টি অক্ষর দীর্ঘ।

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

কমান্ড-লাইন আর্গুমেন্ট সংস্করণ (143 বাইট):

n;main(c,v)char**v;{char*o="#0469@ADOPQRabdegopq",*t="$%&8B",*p=v[1];for(;*p;p++)if(strchr(o,*p))n++;else if(strchr(t,*p))n+=2;printf("%d",n);}

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


1
@ ডিজেএমসিমেহেম সি সত্যিই খুব খারাপ নয়। ফোর্টরান 77 এ গল্ফ করার চেষ্টা করুন;)
অ্যালেক্স এ

5

পাইথন 2, 96 90 75 67 + 2 = 69 বাইট

এটি করার জন্য অন্য কোনও উপায় নিয়ে ভাবতে পারি না ... আমি এক্সনোরের সমাধান না পাওয়া পর্যন্ত এটিই ভাবতাম। আমার যা ছিল তা পোস্ট করব।

6 বাইট সংরক্ষণের জন্য FryAmTheEggman কে ধন্যবাদ

ঠিক আছে, এখন আমি এতে খুশি।

এক্সটোর সন্ধানের কৌশলটির জন্য 4 টি বাইট সংরক্ষণ করে ধন্যবাদ Thanks

ইনপুটটি উদ্ধৃতিতে আবদ্ধ হওয়া প্রয়োজন বলে দুটি বাইট যুক্ত করা হয়েছে।

print sum('#0469@ADOPQRabdegopq$%&8B'.find(x)/20+1for x in input())

1
আমি সূচকের চালাক ব্যবহার পছন্দ করি! এছাড়াও, পাইথন 3 কিছুটা খাটো কারণ এটি কাঁচা_পিন্ডের পরিবর্তে ইনপুট ব্যবহার করে।
ডিজেএমসিএমহেম

@ মানাটওয়ার্ক এটি পাইথন 2-এ
কেড

আচ্ছা বুঝলাম. দুঃখিত, আমি এটি @ ডিজেএমসিএমহেমের পাইথন 3 মন্তব্যের সাথে একত্রিত করেছি।
মনটাক

4

জাভা, 162

class C{public static void main(String[]a){System.out.print(-a[0].length()+a[0].replaceAll("[#0469@ADOPQRabdegopq]","..").replaceAll("[$%&8B]","...").length());}}

ওয়েল যদি এটা হয়েছে একটি পূর্ণ প্রোগ্রাম হতে ... এটি শুধু একটি এক-লাইনের যে ম্যাচ অক্ষর এবং তাদের একটি লম্বা স্ট্রিং সঙ্গে প্রতিস্থাপন করে। তারপরে, মূল থেকে দৈর্ঘ্যের পার্থক্যটি প্রদান করে। দুর্ভাগ্যক্রমে, জাভা এর কাছে কেবল ম্যাচের সংখ্যা গণনা করার মতো কিছুই নেই।

এখানে এটি লাইন ব্রেকগুলির সাথে রয়েছে:

class C{
    public static void main(String[]a){
        System.out.print(
                -a[0].length() +
                a[0].replaceAll("[#0469@ADOPQRabdegopq]","..")
                .replaceAll("[$%&8B]","...")
                .length()
                        );
    }
}


4

জাভাস্ক্রিপ্ট, 114 95 বাইট

alert(prompt().replace(/[#046@ADOPQRabdegopq]/g,9).replace(/[$%&8B]/g,99).match‌​(/9/g).length)

আমাকে গল্ফ এনে সাহায্য করার জন্য ইসমাইল মিগুয়েলকে ধন্যবাদ।


2
93 বাইট:alert(prompt().replace(/[#046@ADOPQRabdegopq]/g,9).replace(/[$%&8B]/g,99).match(/9/g).length)
ইসমাইল মিগুয়েল

খারাপভাবে গণনার জন্য দুঃখিত। হ্যাঁ, এটি 95.
ইসমাইল মিগুয়েল

3

রুবি, 59 বাইট

a=gets;p a.count('#0469@ADOPQRabdegopq')+2*a.count('$%&8B')

কমান্ড লাইন বা স্টিডিন থেকে ইনপুট। একটি অনাহুত ভাষা ব্যবহার করে এখন পর্যন্ত সংক্ষিপ্ততম।

আপডেট: চিলিমাজিক আমাকে মারল


3

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

1

[#0469@ADOPQRabdegopq]
1
[$%&8B]
11
[^1]
<empty line>

আনারি আউটপুট দেয়।

প্রতিটি লাইনের নিজস্ব ফাইলে যাওয়া উচিত বা আপনি -sপতাকাটি ব্যবহার করতে পারেন । উদাহরণ:

> echo "pp&cg"|retina -s counter
11111

লাইনের জোড়া (প্যাটার্ন - বিকল্প জোড়া) নিম্নলিখিত বিকল্পের পদক্ষেপগুলি করে:

  • সরান 1'র
  • এর সাথে 1-কাউন্টার চিঠিগুলি প্রতিস্থাপন করুন 1
  • এর সাথে 2-পাল্টা অক্ষরের বিকল্প দিন 11
  • সমস্ত কিছুই 1বাদ দিন

3

জে, 43

একটি ফাংশন হিসাবে:

   f=:[:+/[:,30$'$%&8B#0469@ADOPQRabdegopq'=/]
   f 'text goes here'
6

46 বাইট (কমান্ড লাইন)

একক কমান্ড-লাইন প্রোগ্রাম হিসাবে:

echo+/,30$'$%&8B#0469@ADOPQRabdegopq'=/>{:ARGV

উপরের লাইনটি সংরক্ষণ করুন counter2.ijsএবং কমান্ড লাইন থেকে কল করুন:

$ jconsole counter2.ijs 'Programming Puzzles and Code Golf'
13

কোডটিতে ইনপুটটি অনুলিপি-আটকানো অনুমোদিত নয় তবে এমন একটি ফাংশন যা আর্গুমেন্ট হিসাবে ইনপুট নিতে পারে ঠিক আছে। যেমন f=:your_function_code
এলোমেলো

2

জুলিয়া, 77 74 বাইট

t=readline();length(join(t∩"#0469@ADOPQRabdegopq")*join(t∩"\$%&8B")^2)

এটি STDIN থেকে পাঠ্য পড়ে এবং ফলাফলটি STDOUT এ মুদ্রণ করে।

অবহেলিত + ব্যাখ্যা:

# Read text from STDIN
t = readline()

# Print (implied) to STDOUT the length of the intersection of t with the
# 1-closed counter list joined with the duplicated intersection of t with
# the 2-closed counter list
length(join(t ∩ "#0469@ADOPQRabdegopq") * join(t ∩ "\$%&8B")^2)

উদাহরণ:

julia> t=readline();length(join(t∩"#0469@ADOPQRabdegopq")*join(t∩"\$%&8B")^2)
Programming Puzzles and Code Golf
13

2

আরএস , 56 বাইট

_/
[#0469@ADOPQRabdegopq]/_
[$%&8B]/__
[^_]/
(_+)/(^^\1)

জীবন্ত উদাহরণ.


কেবলমাত্র একটি ফাই: আমি আরএস এর জন্য একটি স্টাব ইওসাল্যাং পৃষ্ঠা তৈরি করেছি। আপনি এটি যুক্ত করতে ইচ্ছুক হতে পারেন: esolangs.org/wiki/Rs
mbomb007

@ mbomb007 ওয়াও !! এটা সবেমাত্র আমার দিনটি তৈরি করেছে। : ডি
kirbyfan64sos

ঠিক আছে, "আরএস" গুগল বা কিছুতেই আসে না কারণ এটি কেবল দুটি অক্ষর। এইভাবে, লোকেরা এটি খুঁজে পেতে পারে। :)
mbomb007

2

GNU APL, 37 টি অক্ষর

+/,⍞∘.=30⍴'$%&8B#0469@ADOPQRabdegopq'

একটি চরিত্রের ভেক্টর তৈরি করুন যাতে 2-পাল্টা অক্ষর দুটি থাকে (30⍴)

ভেক্টরের প্রতিটি অক্ষরের সাথে প্রতিটি ইনপুট চর তুলনা করুন (=। =)

র‌্যাভেলড ম্যাচগুলি সমষ্টি (+ /,)


1

জাভাস্ক্রিপ্ট 159 , 130 বাইট

function c(b){return b.split("").map(function(a){return-1!="$%&8B".indexOf(a)?2:-1!="#0469@ADOPQRabdegopq".indexOf(a)?1:0}).reduce(function(a,b){return a+b})};

unminified:

function c(b) {
    return b.split("").map(function(a) {
        return -1 != "$%&8B".indexOf(a) ? 2 : -1 != "#0469@ADOPQRabdegopq".indexOf(a) ? 1 : 0
    }).reduce(function(a, b) {
        return a + b
    })
};

@ Edc65 এর সহায়তায়:

function c(b){return b.split('').reduce(function(t,a){return t+(~"$%&8B".indexOf(a)?2:~"#0469@ADOPQRabdegopq".indexOf(a)?1:0)},0)}

2
হিসাবে ~ -1 == 0, আপনি ~x?পরিবর্তে লিখতে পারেন -1 != x?। ব্যবহারের উদাহরণের জন্য আমাকে উত্তর দেখুন।
edc65

2
function c(b){return b.split('').reduce(function(t,a){return t+(~"$%&8B".indexOf(a)?2:~"#0469@ADOPQRabdegopq".indexOf(a)?1:0)},0)}আছে কোন প্রয়োজন নেই mapতারপরreduce
edc65

1

হাস্কেল, 117

a="#0469@ADOPQRabdegopq"
b="$%&8B"
c n[]=n
c n(x:s)
 |e a=f 1
 |e b=f 2
 |True=f 0
 where
 e y=x`elem`y
 f y=c(n+y)s

সি একটি ফাংশন c :: Int -> String -> Intযা একটি কাউন্টার এবং একটি স্ট্রিং নেয় এবং স্ট্রিংয়ের মাধ্যমে একটি অক্ষর একবারে পরীক্ষা করে দেখা হয় যে বর্তমান চিঠিটি 1 পয়েন্ট অ্যারে বা 2 পয়েন্ট অ্যারের সদস্য কিনা এবং বৃদ্ধির পরে বাকী স্ট্রিংয়ের জন্য নিজেকে কল করে? কাউন্টার উপযুক্ত পরিমাণ।

কাউন্টারে কল করুন = 0 কেসি তে:

ghci> c 0 "All your base are belong to us"
12

1

সি #, 157

void Main(string s){int v=0;v=s.ToCharArray().Count(c=>{return "#0469@ADOPQRabdegopq".Contains(c)||"$%&8B".Contains(c)?++v is int:false;});Console.Write(v);}

Ungolfed:

void Main(string s)
{
    int v = 0;

    v = s.ToCharArray()
    .Count(c => 
    {
        return "#0469@ADOPQRabdegopq".Contains(c) || "$%&8B".Contains(c) ? ++v is int:false;
    });

    Console.Write(v);
}

স্ট্রিংটিকে একটি চর অ্যারে রূপান্তর করা, তারপরে প্রতিটি চর উভয়ই কাউন্টারে রয়েছে কিনা তা দেখে। এটি যদি দ্বিতীয়টিতে থাকে তবে আমার কাছে এটি আবার কাউন্টার বাড়ানো আছে।


1

এরলং, 103 বাইট

এটি একটি সম্পূর্ণ প্রোগ্রাম যা স্ক্রিপ্ট ব্যবহার করে চলমান। ফাইলটির প্রথম লাইনটি অবশ্যই ফাঁকা (1 বাইট যুক্ত) হওয়া আবশ্যক।

main([L])->io:write(c(L,"#0469@ADOPQRabdegopq")+2*c(L,"$%&8B")).
c(L,S)->length([X||X<-L,S--[X]/=S]).

নমুনা রান:

$ escript closed.erl 'Shortest answer in bytes is the winner!'
8$

পিপিসিগিতে আপনাকে স্বাগতম, সি (এল, "# 0469 @ ADOPQRabdegopq") + 2 * সি (এল, "$% এবং 8 বি") সি এর চেয়ে দীর্ঘ (এল, "# 0469 @ ADOPQRabdegopq $% এবং 8 বি $% এবং 8 বি") 5 বাইটস :)।
কাটেনকিও

@ কাতিয়েনকো, এই পরামর্শের জন্য ধন্যবাদ। আফসোসভাবে এটি নির্দিষ্ট ইনপুটগুলির জন্য সঠিকভাবে কাজ করে না। "$% এবং 8 বি" 5 এর জন্য গণনা করে, তবে 10 হওয়া উচিত The সি / 2 ফাংশনটি স্ট্রিংয়ের অক্ষরগুলি ফিল্টার করে কাজ করে যা চরগুলির সেটের সাথে সম্পর্কিত নয়, যেমন "&% & 8B"। সেটটি থেকে পরীক্ষার জন্য চরটি মুছে ফেলার মাধ্যমে সেটটি অন্তর্ভুক্তির জন্য পরীক্ষা করে, তারপরে ফলাফলটিকে মূল সেটের সাথে তুলনা করে। যদি তারা সমান না হয়, তবে চরটি সেটে ছিল এবং এটি অন্তর্ভুক্ত রয়েছে। সেটে চরগুলির একাধিক অনুলিপি কোনও প্রভাব ফেলবে না।
এডউইন ফাইন

হো, আমি দেখছি, আমি জানি না, ভাবছিলাম আপনি কাউন্টারটি গণনা করতে একটি স্ট্রিং ব্যবহার করছেন: 3 3 যাইহোক, কিছুই নয়, এবং ভাল কাজ করেছেন :)
কাটেনকিও

0

সি, 99 বাইট

n;f(char*i){for(char*o="#0469@ADOPQRabdegopq$%&8B",*t=o+20;*i;)n+=2-!strchr(o,*i)-!strchr(t,*i++);}

ব্যাখ্যা

আমি আরও কুল গাই এর উত্তর গল্ফ ; এটি একটি মন্তব্য হতে খুব দীর্ঘ পেয়েছে। if/ এর পরিবর্তে else, আমি !পয়েন্টারকে বিলে রূপান্তর করার সুবিধা নিয়েছি । আমি oঅন্তর্ভুক্তও tকরেছি যাতে আমি মোট কাউন্টারগুলির জন্য " oইন ইন " এবং "" ইন " যুক্ত করতে পারি t

প্রসারিত কোড

#include <string.h>
int num = 0;

void f(char* input)
{
    char *one = "#0469@ADOPQRabdegopq"  "$%&8B";
    char *two = strchr(one, '$');

    while (*input) {
        num += 2 - !strchr(one, *input) - !strchr(two, *input));
        ++input;
    }
}

আউটপুট রয়েছে num, যা প্রতিটি কল করার আগে অবশ্যই সাফ করা উচিত।

পরীক্ষা প্রোগ্রাম এবং ফলাফল

#include <stdio.h>
int main() {
    const char* a[] = {
        "Programming Puzzles and Code-Golf",
        "4 8 15 16 23 42",
        "All your base are belong to us",
        "Standard loopholes apply",
        "Shortest answer in bytes is the winner!",
        NULL
    };
    for (const char** p = a;  *p;  ++p) {
        n=0;f(*p);
        printf("%3d: %s\n", n, *p);
    }
    return 0;
}
 13: Programming Puzzles and Code-Golf
  5: 4 8 15 16 23 42
 12: All your base are belong to us
 12: Standard loopholes apply
  8: Shortest answer in bytes is the winner!
 37: n;f(char*i){for(char*o="#0469@ADOPQRabdegopq$%&8B",*t=o+20;*i;)n+=2-!strchr(o,*i)-!strchr(t,*i++);}

কোডটিতে নিজেই তার নিজস্ব মেট্রিকের 37 টি কাউন্টার রয়েছে।

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