একটি সংখ্যার দ্বারা কতটি অক্ষরীয় অক্ষর তৈরি করা যায় তা সন্ধান করুন


23

বর্ণানুক্রমিক অক্ষরের ASCII- মান রয়েছে:

0-9  ->  48-57
A-Z  ->  65-90
a-z  ->  97-122

আপনার চ্যালেঞ্জটি হ'ল ইনপুট হিসাবে কোনও পূর্ণসংখ্যা নেওয়া এবং সেই সংখ্যার একটানা সংখ্যা ব্যবহার করে কতগুলি অক্ষর তৈরি করা যায় তা আউটপুট output অক্ষর কোডগুলি ওভারল্যাপিং হতে পারে। 666ফলস্বরূপ হওয়া উচিত 2, যেহেতু আপনার 66দু'বার হয়েছে।

পরীক্ষার কেস:

Input: 5698
Possible characters: '8' (56), 'E' (69), 'b' (98)
Output: 3

Input: 564693
Possible characters: '8' (56), 'E' (69)
Output: 2

Input: 530923864209124521
Possible characters: '5' (53), 'V' (86), '4' (52)  
Output: 3

Input: 1111111
Possible characters: 'ooooo' (5*111)
Output: 5

Input: 5115643141276343
Possible characters: '3' (51), '8' (56), 'L' (76), 's' (115)
Output: 4

Input: 56789
Possible characters: '8' (56), 'C' (67), 'N' (78), 'Y' (89)
Output: 4

Input: 94
Possible characters: ''
Output: 0

Input: 1
Output: 0

ইনপুট এবং আউটপুট ফর্ম্যাটগুলি alচ্ছিক (হ্যাঁ, আপনি পূর্ণসংখ্যাকে স্ট্রিং হিসাবে নিতে পারেন)।

উত্তর:


11

05 এ বি 1 ই , 8 7 বাইট

žKÇIŒÃg

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

ব্যাখ্যা

žK       # push [a-zA-Z0-9]
  Ç      # convert to list of ascii codes
   IŒ    # push all substrings of input
     Ã   # keep only the subtrings which exist in the list of acsii codes
      g  # push length of resulting list

ŒžKÇÃgকাজ করে না?
ম্যাজিক অক্টোপাস উরন

@ কারাসোকম্পুটিং: দুর্ভাগ্যক্রমে, এটি 1111111পরীক্ষার ক্ষেত্রে ব্যর্থ ।
Emigna

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

7

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

∧Ạụ:Ạ:Ịcạ:?{tT&h∋~sT}ᶜ

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

ব্যাখ্যা

       c                 Concatenate together:
∧Ạụ:                       "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    Ạ:                     "abcdefghijklmnopqrstuvwxyz"
      Ị                    "0123456789"
        ạ                Get the list of ASCII codes of that string
         :?{        }ᶜ   Count the number of results, for input [list of codes, Input], of:
            tT             Call the Input T
              &h∋          Take one ASCII code
                 ~sT       It is a substring of T

দুর্ভাগ্যক্রমে আমার জন্য, সৌভাগ্যক্রমে আপনার জন্য, এই মুহুর্তে আমার কাছে কম্পিউটারে অ্যাক্সেস নেই;)
লিকি নুন

@ ল্যাকইনুন আমি এটি করার জন্য আরও ছোট উপায়গুলির কথা ভেবেছি, বাগের কারণে উভয়ই ব্যর্থ।
ফ্যাটালাইজ করুন

আপনি দুজনে Tএকসাথে যোগদান করতে পারেন ?
লিকি নুন

1
এই বাগের কারণ কী?
লিকি নুন

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

7

এমএটিএল , 17 13 বাইট

8Y2"G@oVXf]vn

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

8Y2     % Predefined literal: string with all letters, uppercase and lowercase,
        % and digits
"       % For each character in that string
  G     %   Push input, for example the string '5115643141276343'
  @     %   Push current character, such as 'A'
  o     %   Convert to its ASCII code, such as 65
  V     %   String representation, such as '65'
  Xf    %   Find string '65' within string '5115643141276343'. This gives a vector
        %   (possibly empty) with indices of occurrences
]       % End
v       % Concatenate all stack contents vertically
n       % Number of entries. Implicitly display

6

জাভা 7, 204 197 195 বাইট

int c(String n){int r=0,i=0,e=n.length()-1,t;for(;i<e;r+=((t=new Byte(n.substring(i,i+2)))>47&t<57)|(t>64&t<91)|(t>96&t<100)|((t=new Short(n.substring(i,i++>e-2?i:i+2)))>99&t<123)?1:0);return r;}

ব্যাখ্যা:

int c(String n){       // Method with String parameter and integer return-type
  int r=0,             //  Result
      i=0,             //  Index
      e=n.length()-1,  //  Length of String -1
      t;               //  Temp integer
  for(;i<e;            //  Loop over the String using the index
    r+=                //   Append the result-sum with:
      ((t=new Byte(n.substring(i,i+2)))>47&t<57)|(t>64&t<91)|(t>96&t<100)
                       //    If two adjacent digits are a digit or letter
      |                //    or
      ((t=new Short(n.substring(i,i++>e-2?i:i+2)))>99&t<123)?
                       //    if three adjacent digits are a letter
       1               //     Raise the sum by 1
      :                //    Else:
       0               //     Keep the sum the same (by adding 0)
  );                   //  End of loop (implicit / no body)
  return r;            //  Return result
}                      // End of method

পরীক্ষার কোড:

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

class M{
  static int c(String n){int r=0,i=0,e=n.length()-1,t;for(;i<e;r+=((t=new Byte(n.substring(i,i+2)))>47&t<57)|(t>64&t<91)|(t>96&t<100)|((t=new Short(n.substring(i,i++>e-2?i:i+2)))>99&t<123)?1:0);return r;}

  public static void main(String[] a){
    System.out.println(c("5698"));
    System.out.println(c("564693"));
    System.out.println(c("530923864209124521"));
    System.out.println(c("1111111"));
    System.out.println(c("5115643141276343"));
    System.out.println(c("56789"));
    System.out.println(c("94"));
    System.out.println(c("1"));
  }
}

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

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

5

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

f=([a,...b])=>a?(a&(a+=b[0])+b[1]<123|a>47&a<58|a>64&a<91|a>96)+f(b):0

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


4

পার্ল 5 , 47 বাইট

কোড + -pপতাকা 46 বাইট ।

$"="|";$_=()=/(?=@{[48..57,65..90,97..122]})/g

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

এটি লেখার জন্য আমি কোনও ছোট্ট উপায় খুঁজে পাইনি 48..57,65..90,97..122: map{ord}0..9,a..z,A..Z(অক্ষরগুলির ascii মান পাওয়া) আরও একটি বাইট। এবং করছেন for$c(0..122){$\+=chr($c)=~/\pl|\d/ for/(?=$c)/g}}{(সমস্ত সংখ্যার সন্ধান করছেন , তবে কেবলমাত্র যাদের সংখ্যাগুলি অক্ষরের ( \pl) বা অঙ্কগুলি ( \d) এর ascii মানের সাথে সামঞ্জস্য রেখে 5 বাইট দীর্ঘ হবে (দ্রষ্টব্য যে \pl|\dপ্রতিস্থাপন করা যাবে না কারণ \wআন্ডারস্কোরও অন্তর্ভুক্ত রয়েছে)) ।


পূর্ববর্তী পদ্ধতি (49 বাইট):

for$@(48..57,65..90,97..122){$\+=()=/(?=$@)/g}}{


1

জাভাস্ক্রিপ্ট (ইএস), 165 161 156 154 153 বাইট

হ্যাঁ, RegEx অবশ্যই এখানে কাজের জন্য সঠিক সরঞ্জাম ছিল না!

n=>[/\d{2}/g,/\d{3}/g].map(e=>eval("while(x=e.exec(n)){a.push(m=x[0]);e.lastIndex-=m.length-1}"),a=[])|a.filter(x=>x>47&x<58|x>64&x<91|x>96&x<123).length

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

f=

n=>[/\d{2}/g,/\d{3}/g].map(e=>eval("while(x=e.exec(n)){a.push(m=x[0]);e.lastIndex-=m.length-1}"),a=[])|a.filter(x=>x>47&x<58|x>64&x<91|x>96&x<123).length

console.log(f(5698))//3
console.log(f(564693))//2
console.log(f(530923864209124521))//3
console.log(f(1111111))//5
console.log(f(5115643141276343))//4
console.log(f(56789))//4
console.log(f(94))//0
console.log(f(1))//0


রেজিএক্সপেক্স এতটা খারাপ নয়; আমার রেটিনা উত্তরের একটি বন্দরটি 78 বাইটে এসেছিল।
নীল



1

হাস্কেল, 161 157 138 129 126 বাইট

import Data.List
f x=sum[1|y<-nub$concat$words.concat<$>mapM(\c->[[c],c:" "])x,any(elem$read y)[[48..57],[65..90],[97..122]]]

আমি অবাক হয়েছি যদি ডাটা আমদানির চেয়ে তালিকার দ্বৈত অপসারণের আরও ভাল কোনও উপায় থাকে তবে নুবির জন্য তালিকা?


1
আপনি আমদানি তাহলে Data.Listsপরিবর্তে Data.List, আপনি ব্যবহার করতে পারেন: y<-tail$powerslice x
নিমি

@ নিমিমি যদি আমাকে অমিত মানক মডিউলগুলি ডাউনলোড এবং ইনস্টল করতে হয় তবে এটি কি গল্ফিংয়ের নিয়মের বিরুদ্ধে? আমি মনে করি না ডেটা.লিস্টগুলি জিএইচসিতে মানক।
ম্যাপেল_শফট

যতদূর আমি জানি যে এখনও একটি স্ট্যান্ডার্ড মডিউল হিসাবে গণনা করা হচ্ছে সে বিষয়ে আমাদের conক্যমত নেই। আশেপাশে বেশ কয়েকটি হাস্কেল উত্তর রয়েছে যা ব্যবহার করে Data.Lists। এমনকি হাস্কেলের জন্য গল্ফিং টিপসে এটি উল্লেখ করা হয়েছে - এখনও পর্যন্ত কেউ অভিযোগ করেনি।
নিমি

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

1
টিপস golfing ফিরে আসুন: or $ f <$> listহয় any f list: any(elem$read y)[...]
নিমি

0

পাইথ, 19 17 14 বাইট

l@jGUTmr0Csd.:

একটি স্ট্রিং লাগে।

-3 বাইটস @ লিক্যুনকে ধন্যবাদ জানায়

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

ব্যাখ্যা

l@jGUTmr0Csd.:
    UT                # the list of digits [0,1,2,...,9]
  jG                  # join that on the lowercase alphabet (repetition doesn't matter)
              Q       # implicit input
            .:        # all substrings of the input
      m               # for each of those substrings
          sd          # Convert the string to a base 10 integer
         C            # convert that integer to the character with that number
       r0             # make that character lowercase
l@                    # length of the intersection of those two list of chars we generated

পরিবর্তে ব্যবহার করার জন্য idT, আপনি ব্যবহার করতে পারেন sd
লিকি নুন

এছাড়াও, l@jGUTmr0Csd.:সংক্ষিপ্ত হতে পারে (এটি কাজ করে কিনা তা নিশ্চিত নয়)।
লিকি নুন

@ ল্যাকিয়ুন আপনাকে ধন্যবাদ, এটি কাজ করে!
কার্লকাস্টোর

0

জেলি , 8 বাইট

ØBODf@ẆL

ইনপুট হল অঙ্কের অ্যারে।

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

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

ØBODf@ẆL  Main link. Argument: A (digit array)

ØB        Base 62; yield all alphanumeric ASCII characters.
  O       Ordinal; get their code points.
   D      Decimal; convert the code points into digit arrays.
      Ẇ   Window; yield all contiguous subarrays of A.
    f@    Filter swapped; keep all elements of the result to the right that appear
          in the result to the left.
       L  Length; count the matches.

0

রুবি, 50 বাইট

p (0..~/$/).any?{|n|$_[n,2].to_i.chr=~/\p{Alnum}/}

স্ট্যান্ডার্ড ইনপুট থেকে পড়া; রুবি ইন্টারপ্রেটারের -nবিকল্প (অন্তর্নিহিত while getsলুপ) দিয়ে ডাকা প্রয়োজন ।

এটি আন্ডারস্কোরের সাথে মেলতে দেওয়া হলে 43 বাইটে হ্রাস করা যেতে পারে।

p (0..~/$/).any?{|n|$_[n,2].to_i.chr=~/\w/}

চরিত্রগুলি প্রদর্শিত হওয়ার সংখ্যাটি এটি ফিরিয়ে দেয় না। এছাড়াও, এটি ব্যর্থ হয় 111, যা ফিরে আসা উচিত 1তবে আপনি ফিরে দিচ্ছেন 0
মান কালি

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