বর্ণমালা অবস্থান সন্ধানকারী


10

কোডওয়ার্স কাটা দ্বারা অনুপ্রাণিত ।

আপনার লক্ষ্যটি হ'ল এটির মতো একটি ইনপুট স্ট্রিং নেওয়া:

"'Twas a dark and stormy night..."

এবং বর্ণমালায় প্রতিটি বর্ণের অবস্থান সম্বলিত একটি স্ট্রিং ফিরিয়ে দিন, স্থানগুলি দ্বারা পৃথক করে এবং অ বর্ণানুক্রমিক অক্ষর উপেক্ষা করে:

"20 23 1 19 1 4 1 18 11 1 14 4 19 20 15 18 13 25 14 9 7 8 20"

অতিরিক্ত চ্যালেঞ্জের জন্য, আপনি মূল স্ট্রিংয়ের যে কোনও সংখ্যক অক্ষরকে তাদের + 27 দিয়ে প্রতিস্থাপন করতে পারেন For উদাহরণস্বরূপ, "25"হয়ে উঠবে "29, 32"। এটি সম্পূর্ণ alচ্ছিক।

আপনার 1-ইন্ডেক্স ব্যবহার করা আবশ্যক ( 'a'==1, 'b'==2ইত্যাদি)

অতিরিক্ত নিয়ম:

  • আপনাকে অবশ্যই একটি স্ট্রিং ফিরিয়ে দিতে হবে, অ্যারে নয়।

  • স্পেস স্পেস ঠিক আছে।

বিজয়ীর সর্বনিম্ন বাইট গণনা রয়েছে।

শুভকামনা!



5
@ থিও কেন? সাধারণ sensকমত্যটি হল যে উত্তরগুলি যে কোনও যুক্তিসঙ্গত ফর্ম্যাটে আউটপুট করতে সক্ষম হওয়া উচিত, কারণ এটি অত্যধিক ব্লাট যুক্ত করতে পারে এবং এটি এমন ভাষাগুলির সাথে অন্যায় করে তোলে যারা সংক্ষিপ্ত স্থানে ব্যবধানে যোগদান করতে পারে।
Okx

1
@ থিওসি আপনি কেবল দুজনকেই অনুমতি দিচ্ছেন না কেন?
Okx

3
পিপিসিজিতে আপনাকে স্বাগতম! এটি সামগ্রিকভাবে একটি শালীন চ্যালেঞ্জ, তবে পরবর্তী বারের জন্য আপনি চ্যালেঞ্জ পোস্ট করবেন, কিছু জিনিস মনে রাখা উচিত। 1) এই চ্যালেঞ্জটি বেশ সহজ। আমি মনে করি ifচ্ছিক অংশটি বাধ্যতামূলক হলে এটি আরও আকর্ষণীয় হবে (দ্রষ্টব্য, এখন সেই অংশটি পরিবর্তন করবেন না, অনেক দেরি হয়ে গেছে)। 2) আপনি কিছু স্বেচ্ছাসেবী অংশ সম্পর্কে বেশ সীমাবদ্ধ। একটি অ্যারে অনুমতি দেয় না কেন? এটা তোলে আমাদের মান এর চেয়ে অক্ষরের একটি অ্যারের হয় একটি স্ট্রিং । আমি ধারণার জন্য এই থ্রেডের মাধ্যমে পড়ার পরামর্শ দেব ।
জেমস

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

উত্তর:


5

05 এ বি 1 ই , (5?) 7 বাইট

ডানদিকের দুটি বাইট আউটপুট বিন্যাস

áÇ32%ðý

আমার জেলি উত্তরের একটি বন্দর , তবে O5AB1E বর্ণমালা ফিল্টারিংয়ের জন্য আরও ক্ষুদ্র।

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

কিভাবে?

áÇ32%ðý - take input implicitly
á       - filter keep alphabetical characters
 Ç      - to ordinals
  32    - thirty-two
    %   - modulo (vectorises)
     ð  - push a space character
      ý - join

যেহেতু ওপি চায় এটি এটিকে ফাঁকা স্থান দিয়ে ছাপানো যায়, তাই একটি অনুবর্তন ðýযুক্ত করা যায়। তবে যেহেতু উত্তর আউটপুট তালিকার অর্ধেক আমার অনুমান কেবল এটি এখনই ছেড়ে দিন।
কেভিন ক্রুইজসেন

আহ। আমি আমার উত্তরে এটি মিস করেছি ...
জোনাথন অ্যালান

5

জাভা 8, 82 78 72 69 62 বাইট

s->{for(int c:s)System.out.print(c>64&~-c%32<26?c%32+" ":"");}

-13 বাইট ধন্যবাদ @ অলিভিগ্রগ্রোয়ারকে

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

ব্যাখ্যা:

s->                    // Method with character-array parameter and no return-type
  for(int c:s)         //  Loop over its characters as integers
    System.out.print(  //   Print:
     c>64&~-c%32<26?   //    If the current character is a letter:
      c%32+" "         //     Print the position in the alphabet with a trailing space
     :                 //    Else:
      "");}            //     Print nothing

1
s->s.chars().forEach(c->{if(c>64&~-c%32<26)System.out.print(c%32+" ");})(72bytes)।
অলিভিয়ার গ্রাগোয়ার

1
@ অলিভিয়ারগ্রোওয়ের ধন্যবাদ! এবং -3 আরও বাইট যদি এটি একটি টের্নারি পরিবর্তন করে :)
কেভিন ক্রুইজসেন

s->{for(int c:s)System.out.print(c>64&~-c%32<26?c%32+" ":"");}(62 বাইট) এর char[]পরিবর্তে একটি ইনপুট হিসাবে ব্যবহার করে String
অলিভিয়ার গ্রাগোয়ার

4

পাইথন 3 , 62 60 49 বাইট

-5 বাইট জো কিংকে ধন্যবাদ জানায় ।
-8 বাইট পিএলওপিজি ধন্যবাদ ।

এই সব উন্নত পরে, এই উত্তর এখন অনুরূপ জনাথন অ্যালান এর উত্তর

print(*[ord(c)%32for c in input()if c.isalpha()])

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


ওহ, আমিও %32কাজটি অনুমান করি
জো কিং

4

আর , 55 50 বাইট

cat(utf8ToInt(gsub("[^A-Za-z]","",scan(,"")))%%32)

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

স্টিডিন থেকে ইনপুট পড়ুন, বড় হাতের অক্ষরে রূপান্তরিত হয়, অপ-অক্ষরের বর্ণমালা বর্ণগুলি সরিয়ে দেয় , কোড পয়েন্টগুলিতে রূপান্তর করে, 32 দ্বারা 64 মোডে বিয়োগ করে এবং ফাঁকা স্থান দ্বারা পৃথক করে স্টাডাউটে প্রিন্ট করে।

গল্ফের জন্য কেভিন ক্রুইজসেনকে ধন্যবাদ!



@KevinCruijssen * facepalm * duh
: Giuseppe

আমি প্রশ্নের সাথে দুটি মন্তব্য (প্রশ্ন) যুক্ত করেছি - উত্তরের উপর নির্ভর করে এটিকে গল্ফ করার একটি সুযোগ আছে 46 বা এমনকি 39 টি অক্ষরে।
জেসি

1
আপনি 47 ব্যবহার করতে পারেন[^A-z]
মিকিটি

4

এপিএল (ডায়ালগ ইউনিকোড) , 24, 20, 14 13 বাইট

-4 বাইট জ্যাকারি (এবং মিঃ এক্সকোডার) কে ধন্যবাদ!

অ্যাডাম -6 বাইট ধন্যবাদ!

-1 বাইট ধন্যবাদ এনএনজি!

A⍳⎕A∩⍨≡819⌶⊢

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

ব্যাখ্যা:

        819⌶⊢  - to uppercase
   A∩⍨         - intersect with the letters A-Z (args swapped to preserve the order)
                 - index in
A               - the A-Z letters list

আমার প্রাথমিক সমাধান:

এপিএল (ডায়ালগ ইউনিকোড) , 24 20 বাইট

{⍵/⍨27>⍵}⎕A1(819⌶)⊢

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

ব্যাখ্যা:

                        indices of     
              1(819⌶)⊢  the right argument (⊢) changed to uppercase
          A            in the list of uppercase letters
{⍵/⍨     }              copy (filter) those items from the list of indeces
     27>⍵               which are smaller than 27 (all non A-Z chars will have index 27)

আমাকে হাসবেন না, আমি এপিএলে নতুন আছি :)


1
এটি আসলে এপিএলে নতুন কারও পক্ষে অসাধারণ! আপনার অনুশীলনের দরকার নেই, তারা ধরে নেওয়া হচ্ছে। এছাড়াও, {1(819⌶)⍵}হতে পারে 1(819⌶)⊢। অন্যথায়, আশ্চর্যজনক কাজ! আশা করি আপনি ভবিষ্যতে এপিএল উপভোগ করবেন!
জাচারা

@ জ্যাচারý ধন্যবাদ! আমি আশা করি (জেতে আমার কিছু জ্ঞান আছে, আমি অ্যারে ভাষাগুলিতে সম্পূর্ণ নতুন নই)
গ্যালেন ইভানোভ

1
যেমন জাচারি উল্লেখ করেছেন, প্রথম বন্ধনী অনুমান করা হয়েছে , সুতরাং আপনার এগুলি বাইট গণনায় অন্তর্ভুক্ত করা উচিত নয়, ফলস্বরূপ 20 বাইট হয়।
মিঃ এক্সকোডার

1
@ জোনাঃ আমি একটি ব্যাখ্যা যুক্ত করেছি। আপনি ঠিক বলেছেন, মূলধন এবং বর্ণমালা নিজেই
জেতে

1
সুন্দর কাজ! আপনি রচনা দ্বারা একটি বাইট সংরক্ষণ করতে পারবেন 1করার 819⌶সরাসরি 27s সরিয়ে এবং পাঁচটি সংরক্ষণ করুন: 27~⍨⎕A⍳819⌶⍨∘1; বা বর্ণমালা দিয়ে ছেদটি নিয়ে যান:⎕A⍳⎕A∩⍨819⌶⍨∘1
Adám

3

পাইথন 2 , (45?) 55 বাইট

আউটপুট ফর্ম্যাট করতে 11 বাইট যুক্ত করা হয়েছে যা এটি পাইথন 3 এর সাথেও বেমানান makes

lambda s:' '.join(`ord(c)%32`for c in s if c.isalpha())

আমার জেলি উত্তর আরেকটি বন্দর।

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


অ-বিন্যাসিত সংস্করণ (পূর্ণসংখ্যার একটি তালিকা ফেরত):

lambda s:[ord(c)%32for c in s if c.isalpha()]

1
দেখে মনে হচ্ছে ওপি স্পেস দ্বারা পৃথক স্ট্রিং আউটপুটটিতে জোর দিচ্ছে, দুর্ভাগ্যক্রমে
সোক

1
হ্যাঁ - আমি আমার সমস্ত উত্তরে মিস করেছি - একজন সাইটের রীতিতে এতটা অভ্যস্ত হয়ে যায়!
জোনাথন অ্যালান

3

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

t=>t.match(/[a-z]/gi).map(i=>parseInt(i,36)-9).join` `

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

ব্যাখ্যা:

t =>                       // lambda function accepting a string as input
    t.match(/a-z/gi).      // returns all parts of string that match as an array 
        map(i=>            // map over that array with argument i 
            parseInt(i,36) // convert to base 36 
                - 9        // and subtract 9 from it
        ).                 // end map
        join` `            // convert to space separated string

11 কে বাইন সংরক্ষণ করেছেন @ কেভিনকে ধন্যবাদ

আরও 1 টি বাইট @ নীলকে ধন্যবাদ


কিছু অতিরিক্ত বাইটের জন্য আপনি সংখ্যার জন্য সমর্থন যোগ করতে পারেন (@ নীলকে ধন্যবাদ)

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

t=>t.match(/[^_\W]/g).map(i=>(parseInt(i,36)+26)%36+1).join` `

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


পরিবর্তন করে -11 বাইট a-zথেকে A-Za-zএবং i.toLowerCase().charCodeAt()-96থেকেi.charCodeAt()%32
কেভিন Cruijssen

1
parseInt(i,36)-9অন্য একটি বাইট সংরক্ষণ করে।
নীল

.match(/[^_\W]/g).map(i=>(parseInt(i,36)+26)%36+1)আপনাকে সংখ্যাগুলি সমর্থন করতে দেয়, তবে এটি নিশ্চিত না যে এটি সবচেয়ে ভাল উপায়।
নীল

2

জেলি , (7?) 8 বাইট

ডানদিকের বাইট হ'ল আউটপুট বিন্যাস

fØẠO%32K

পাইথন ফর্ম্যাটে একটি স্ট্রিং গ্রহণকারী একটি সম্পূর্ণ প্রোগ্রাম যা ফলাফলটি STDOUT এ মুদ্রণ করে

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

কিভাবে?

fØẠO%32K - Main Link: list of characters (created from the string input)
 ØẠ      - yield the alphabet = ['A','B',...,'Z','a','b',...,'z']
f        - filter keep (discard non alphabet characters)
   O     - ordinals          ('A':65, 'Z':90, 'a':97, 'z':122, etc.)
     32  - literal thirty-two
    %    - modulo            (65:1,   90':26,  97:1,  122:26,  etc.)
       K - join with spaces (makes a list of characters and integers)
         - implicit print


2

x86 অপকোড, 35 বাইট

0080h: AC 3C 24 75 04 88 45 FF C3 0C 20 2C 60 76 F1 D4
0090h: 0A 0D 30 30 86 E0 3C 30 74 01 AA 86 E0 AA B0 20
00a0h: AA EB DD                                       

f:  lodsb
    cmp al, '$'
    jnz @f
        mov [di-1], al
        ret
    @@:
    or al, 32
    sub al, 96
    jbe f
    aam
    or ax, 3030H
    xchg ah, al
    cmp al, 48
    jz @f
        stosb
    @@:
    xchg ah, al
    stosb
    mov al, 32
    stosb
    jmp f

ধরে নিচ্ছি ফলাফলটিতে কমপক্ষে একটি চিঠি রয়েছে এবং না {|}~

40 বাইটস, সমস্ত ASCII অক্ষর অনুমতি দেয়

0080h: AC 3C 24 75 04 88 45 FF C3 0C 20 2C 60 76 F1 3C
0090h: 1A 77 ED D4 0A 0D 30 30 86 E0 3C 30 74 01 AA 86
00a0h: E0 AA B0 20 AA EB D9                           

"X86 অপকোড" কী? এটি কি কেবল একটি x86 মেশিন কোড জমা?
Jakob

@ জ্যাকব সত্য আমি এখানে ".COM" বলি না এটি একটি ফাংশন এবং "
.কম

হুম। হ্যাঁ, আমি মনে করি এটি মেশিন কোড সমাধানগুলি সম্পূর্ণ সম্পাদনযোগ্য হতে হবে না। এটি কেবল "x86 মেশিন কোড" লেবেল করা ভাল
জাকব

2

স্ট্যাক্স , 9 10 9 বাইট

üpÉÿ%}},√

এটি চালান এবং এটি ডিবাগ করুন

-1 বাইট @ রিসার্সিভকে ধন্যবাদ

ব্যাখ্যা:

v{VaIvm0-J Full program, unpacked, implicit input
v          Lowercase
 {    m    Map:
  VaI        Index in lowercase alphabet (0-based, -1 for not found)
     ^       Increment
       0-  Remove zeroes
         J Join by space
           Implicit output

স্ট্যাক্স , 7 বাইট

É▌Xl»↔"

এটি চালান এবং এটি ডিবাগ করুন

এই এক নতুন লাইন পৃথক আউটপুট। প্যাক করা নেই: vmVaI^|c। অনুরূপ, তবে মানচিত্রের সাথে, যা স্পষ্টভাবে নতুন লাইনের পিছনে আউটপুট দেয়।


হুঁ। মহাশূন্যে শেষ হওয়া প্যাকিং প্রোগ্রামগুলির মধ্যে একটি সমস্যা রয়েছে বলে মনে হচ্ছে
পুনরাবৃত্ত হবে

@ রিসার্সিভ ওহ, এটি লক্ষ্য করেনি (সাধারণত আমি লিঙ্কগুলি চেষ্টা করি, তবে দৃশ্যত আমি এটি এখানে ভুলে গিয়েছি)। আমি একটি workaround যোগ।
wastl

আমি এই বাগটি কখনই লক্ষ্য করিনি। স্ট্যাক্সের পরবর্তী প্রকাশে আমি এটি ঠিক করব। বিদ্যমান প্যাকড প্রোগ্রামগুলি অপরিবর্তিত থাকবে।
পুনরুত্থিত


2

হোয়াইটস্পেস , 152 117 বাইট

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

[N
S S N
_Create_Label_LOOP][S S S N
_Push_0][S N
S _Duplicate_0][T   N
T   S _Read_STDIN_as_character][T   T   T   _Retrieve][S N
S _Duplicate_input][S S S T S S S S S N
_Push_32][T S T T   _Modulo][S N
T   _Swap_top_two][S S S T  T   T   T   T   T   N
_Push_63][T S T S _Integer_divide][T    S S N
_Multiply][S N
S _Duplicate][S S S T   T   S T T   N
_Push_27][S T   S S T   N
_Copy_1st][S S S T  N
_Push_1][T  S S S _Add][T   S T S _Integer_divide][T    S S N
_Mulitply][N
T   S N
_If_0_Jump_to_Label_LOOP][T N
S T _Print_as_number][S S S T   S S S S S N
_Push_32_space][T   N
S S _Print_as_character][N
S N
N
_Jump_to_Label_LOOP]

বর্ণ S(স্থান), T(ট্যাব) এবং N(নতুন-লাইন) কেবল হাইলাইট হিসাবে যুক্ত করা হয়েছে।
[..._some_action]শুধুমাত্র ব্যাখ্যা হিসাবে যুক্ত।

এটি অনলাইনে চেষ্টা করুন (কেবলমাত্র কাঁচা জায়গা, ট্যাব এবং নতুন লাইন সহ)।

সিউডো-কোডে ব্যাখ্যা:

Start LOOP:
  Character c = STDIN as character
  Integer n = (c modulo-32) * (c integer-divided by 63)
  Integer m = 27 integer-divided by (n + 1) * n;
  If(m == 0):
    Go to next iteration of LOOP
  Else:
    Print n as integer to STDOUT
    Print a space to STDOUT
    Go to next iteration of LOOP

1
হোয়াইটস্পেসে এটি লেখার মতো সময় আমার কাছে নেই, তবে সম্ভবত আপনি এই জাতীয়
লিন

1
দেখে মনে হচ্ছে 117 বাইট ! (* কোডে আমি 64৪ থেকে 63৩ এ পরিবর্তিত হয়েছি কারণ এটি সমতুল্য হলেও হোয়াইটস্পেসে প্রতিনিধিত্ব করার চেয়ে ছোট) :)
লিন

@ লিন খারাপ নেই, -35 বাইট ঠিক আছে। ধন্যবাদ। :)
কেভিন ক্রুইজসেন

1

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

láÇ96-ðý

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

বা, যদি আমরা কোনও অ্যারে ফিরিয়ে দিতে পারি:

05 এ বি 1 ই , 6 বাইট

láÇ96-

ব্যাখ্যা:

l         Lowercase
 á        Only letters
  Ç       Codepoints
   96-    Subtract 96.

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

অথবা আপনি যদি এটির সংখ্যা গণনা করতে চান:

05 এ বি 1 ই , 13 বাইট

lAžh«DŠÃSk>ðý

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



1

কাঠকয়লা , 21 বাইট

≔⁺β⭆χιβF↧S¿№βι«I⊕⌕βι→

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

≔⁺β⭆χιβ

পূর্বনির্ধারিত ছোট হাতের অক্ষরের পরিবর্তনশীলগুলিতে অঙ্কগুলি যুক্ত করুন।

F↧S

লোকেস ইনপুট উপর লুপ।

¿№βι«

যদি বর্তমান চরিত্রটি কোনও বর্ণ বা অঙ্ক হয়,

I⊕⌕βι

এটির 1 সূচকযুক্ত সূচি মুদ্রণ করুন,

এবং পরবর্তী মানের জন্য একটি স্থান ছেড়ে দিন।


1

লাল , 93 বাইট

func[s][a: charset[#"a"-#"z"]parse lowercase s[any[copy c a(prin[-96 + to-char c""])| skip]]]

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


আমি রেড সম্পর্কে যথেষ্ট জানি না, তবে #"a"-#"z"নিম্ন এবং বড় হাতের অক্ষর উভয়কেই বদলে যেতে পারি ; এবং তারপর lowercaseঅপসারণ করা যেতে পারে; এবং -96 + to-char cমডুলো -32 হতে পারে? যদিও এটি রেডে বাইটস সংরক্ষণ করে কিনা তা নিশ্চিত নয়।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুইজসেন ধন্যবাদ, আমি পরে এটি চেষ্টা করব
গ্যালেন ইভানোভ

parseম্যাচটি একক অক্ষর হলেও @ কেভিন ক্রুজসেন ফাংশন স্ট্রিং সংগ্রহ করে, এজন্য আমার সর্বদা প্রয়োজন to-char। বড় হাতের অক্ষরের জন্য আমাকে চরসেট # "এ" - # "জেড" যুক্ত করতে হবে, যা মুছে ফেলা থেকে লাভ (যদি থাকে) লুণ্ঠন করে lowercase
গ্যালেন ইভানভ

হ্যাঁ, আমি খুব ভয় পেয়েছিলাম #"A"-#"Z"যে তুলনায় তুলনামূলকভাবে খুব বেশি লাভ না হবে lowercase, যেহেতু এটি কেবল 1 বাইট ছোট। এবং আমি জানতাম যে আপনার প্রয়োজন হবে to-char, কেবলমাত্র নিশ্চিত ছিল না যে -96 + এবং মডুলো -32 আকারে একই রকম হবে।
কেভিন ক্রুইজসেন


1

পিএইচপি , 70 বাইট

for(;$c=$argv[1][$i++];)if(($c=ord($c))>64&($c%=32)>0&$c<27)echo"$c ";

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

-5 বাইট কেভিনকে ধন্যবাদ


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

দুঃখিত, এখন এটি ইনপুট হিসাবে প্রথম যুক্তি ব্যবহার করে
user2803033

হাই, পিপিসিজিতে আপনাকে স্বাগতম! যদি আপনি এমনটি না থাকে, তাহলে পিএইচপি golfing জন্য টিপস এবং <সমস্ত ভাষা> এ golfing জন্য টিপস মাধ্যমে পড়া আকর্ষণীয় হতে পারে। অংশ হিসাবে আপনি গল্ফ করতে পারেন: &&হতে পারে &, এবং ord(strtolower($c))-96হতে পারে ord($c)%32। এছাড়াও, আমি মনে করি আপনি এর ~আগে মুছে ফেলতে পারেন $c, তবে আমি নিশ্চিত নই। পিএইচপি তে খুব বেশি প্রোগ্রাম করা হয়নি, এবং সত্যিই জানি না যে ~এখানে যাইহোক ডান জন্য ব্যবহৃত হয়।
কেভিন ক্রুইজসেন

আপনার ইনপুট জন্য ধন্যবাদ। মোড 32 একটি ভাল ধারণা। এটি কিছু বাইট সংরক্ষণ করে তবে ord৪ এর চেয়ে বড় অর্ডার ($ সি) বড় কিনা তা নিশ্চিত করার জন্য একটি অতিরিক্ত চেক প্রয়োজন।
ব্যবহারকারী 2803033

1

পার্ল 5 -p , 35 বাইট

$_="@{[map{(-64+ord uc)%43}/\w/g]}"

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

অঙ্কগুলি সম্পর্কে অতিরিক্ত অংশ অন্তর্ভুক্ত করে।


1
/\w/ অন্তর্ভুক্ত _
ব্র্যাড গিলবার্ট বি 2 গিল

আমি যা খেলছিলাম তার চেয়ে অনেক ছোট! আপনি একটি বাইট সংরক্ষণ করতে পারেন এবং উল্লিখিত বাগ @ ব্র্যাডগিলবার্টব 2 গিলগুলি ঠিক করতে পারেন, এটি ব্যবহার করে -F/[^0-9\pL]|/: অনলাইনে চেষ্টা করে দেখুন!
ডম হেস্টিংস


1

পার্ল 6 , 32 বাইট (আলফা), 41 বাইট (আলফা + ডিজিট)

{~(.uc.comb(/<:L>/)».ord X-64)}

এটি ব্যবহার করে দেখুন (32 বাইট আলফা)

{~((.uc.comb(/<:L+:N>/)».ord X-64)X%43)}

এটি ব্যবহার করে দেখুন (41 বাইট আলফা + ডিজিট)

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

32 বাইট আলফা

{  # bare block lambda with implicit parameter $_

  ~( # coerce to string (space separated)

      .uc                      # uppercase
      .comb( / <:L > / )\      # get letters as a sequence
      ».ord                    # get the ordinal of each
      X- 64                    # subtract 64 from each
  )
}

41 বাইট আলফা + ডিজিট

{  # bare block lambda with implicit parameter $_

  ~( # coerce to string (space separated)
    (
      .uc                      # uppercase
      .comb( / <:L + :N > / )\ # get letters and numbers as a sequence
      ».ord                    # get the ordinal of each
      X- 64                    # subtract 64 from each
    ) X% 43                    # modulus 43 for each
  )
}

এটি এএসসিআইআই-এর মতো নন চরিত্রের সাথেও মেলে Эতবে আমি ইনপুটটি কেবলমাত্র এসসিআইআই-তে কিনা তা নিয়ে ওপি থেকে স্পষ্টতা চেয়েছি।
জো কিং


1

পিএইচপি 108 105 বাইট

এটি অনলাইনে চেষ্টা করুন (108 বাইট)

এটি অনলাইনে ট্রাই করুন (105 বাইট)

-৩ বাইটস, @ মানাসেহক্যাটজকে ধন্যবাদ (স্ট্র্টলওয়ারের স্তর পরিবর্তন করুন এবং এজেডকে রেজেক্স থেকে সরান)

কোড, কোনও লুপ এড়ানোর চেষ্টা করেছিল

<?=strtr(implode(" ",str_split(preg_replace(
"/[^a-z]/",'',strtolower($argv)))),array_flip(range("`",z)));

ব্যাখ্যা

$string = preg_replace("/[^a-z]/",'',strtolower($argv))  
//the string only contains letters

$string = implode(" ",str_split($string)); 
//the string has a space after every letter

$string = strtr($string, array_flip(range("`",z)));  
//replace every letter   acording to the array

$replacementArray = array_flip(range("`",z));
//this array contains the ansi characters from "`" to the "z"
//array_flip to change the keys with the values
//final array ["`"=>0,"a"=>1, "b"=>2...."z"=>26]

এটিকে সতর্কতা ছাড়াই চালানোর জন্য, আমাকে (ক) শেষ z আরজিভিতে $ আরগভিতে পরিবর্তন করতে হবে [খ] এবং (খ) "শেষ জেডের আশেপাশে" যোগ করতে হয়েছিল But তবে changes পরিবর্তনগুলির সাথে বা ছাড়াই (যা সংস্করণ নির্ভর হতে পারে - I আমি ৫.)) ব্যবহার করছি, আপনি স্ট্রোলটওয়ারকে () স্তরে strtolower($argv)সরিয়ে 3 বাইট সংরক্ষণ করতে পারবেন এবং A-Zরেজেক্স থেকে মূলধনটি সরিয়ে ফেলতে পারবেন ।
মানসেহক্যাটজ-মুভিং 2 কোডিপ্যাক্ট

পিএইচপি 7 এ এটি একটি সতর্কবার্তা দেয়, আমি এখন উত্তরটি সংশোধন করব। আমি দুঃখিত আমি ঠিক কোন WI এর পরীক্ষা করার সময় ছিল না :- ডি
ফ্রান্সিসকো হহন

1
@ মানাসেখ্যাটজ আপনার পরামর্শটি গ্রহণ করেছেন এবং 3 বাইট সংরক্ষণ করেছেন, অনেক ধন্যবাদ thanks
ফ্রান্সিসকো হহন

এর আগে $argv[1]বা এর $argnপরিবর্তে হওয়া উচিত নয় $argv? join3 চেয়ে খাটো বাইট implode
তিতাস


0

পাইথন 2, 110 বাইট 104 বাইট , ব্যবহারকারী ইনপুট সহ

a="abcdefghijklmnopqrstuvwxyz";print" ".join(str(a.index(l)+1)for l in list(input().lower())if l in a)

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


পাইথন 2, 105 বাইট 104 বাইট 96 বাইট , যেখানে tপূর্বনির্ধারিত রয়েছে:

a="abcdefghijklmnopqrstuvwxyz";print" ".join(str(a.index(l)+1)for l in list(t.lower())if l in a)

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

আসুন এটি আরও পঠনযোগ্য সংস্করণ দিয়ে ভাঙা যাক:

alphabet = "abcdefghijklmnopqrstuvwxyz"
foo = [str(alphabet.index(letter) + 1) for letter in list(t.lower()) if letter in alphabet]
print " ".join(foo)

প্রথমত, আমরা সংজ্ঞায়িত করি alphabet বর্ণমালার ।

এরপরে, আমরা তালিকা বোঝার জন্য এখানে ব্যবহার করি:

  1. প্রতিটি আইটেম যেখান থেকে ছোট হাতের অক্ষর সেগুলি তৈরি করুন t
  2. প্রতিটি বর্ণের জন্য, যদি এটি বর্ণমালায় না থাকে তবে এটিকে বাতিল করুন।
  3. যদি তা হয় তবে বর্ণমালায় এর সূচকটি সন্ধান করুন,
  4. এটিতে একটি যুক্ত করুন (কারণ আমরা 1 এ গণনা শুরু করি)
  5. এবং এটি একটি স্ট্রিং করা।

অবশেষে, আমরা এটি একসাথে যোগদান এবং এটি মুদ্রণ।


সম্পাদনা:print বাইটগুলি সংরক্ষণ এবং এটি কোনও ফাংশনের বাইরে কাজ করার জন্য (এবং হারানো বহনযোগ্যতা) এ পরিবর্তিত হয়েছে

সম্পাদনা 2: সাথে একটি সংস্করণ যুক্ত করা হয়েছেinput() পূর্বনির্ধারিত ভেরিয়েবলের পরিবর্তে

3 সম্পাদনা করুন: 1 এবং 2 টি সমাধানের জন্য 8 বাইট সরানো হয়েছে to জো রাজা


আপনি আপনার কোডে 6 বহিরাগত স্থান পেয়েছেন
জো কিং

@ জোকিং আমি তিনজনকে পেয়েছি (সেমিকোলনের পরে, চারপাশে +), বাকিরা কোথায়?
থিও সি

আগে if, forএবং" "
জো কিং

এছাড়াও আপনি অপসারণ করতে পারেন []মধ্যেjoin
জো কিং

আবার, পিপিসিজিতে আপনাকে স্বাগতম! এফওয়াইআই ডিফল্টরূপে (অর্থাত্ প্রশ্নটিতে স্পষ্টভাবে ওভাররাইড না করা থাকলে) উত্তর জমা দেওয়াগুলি ফাংশন বা পূর্ণ-প্রোগ্রাম হতে পারে (আপনার 104 বাইট সংস্করণের মতো) তবে স্নিপেটগুলি নয় (আপনার 96 বাইট সংস্করণের মতো)। এখানে আপনি একটি সংস্করণ জমা দিতে পারে যা একটি ফাংশন তৈরি করে যা 100 বাইটের জন্য স্ট্রিং দেয় :)
জোনাথন অ্যালান

0

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

"$(([char[]]"$args".ToUpper()|%{$_-($_,64)[$_-in65..90]})-ne0)"

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

(দীর্ঘ মনে হচ্ছে ...)

ইনপুট নেয় $args, .ToUpperকেস রূপান্তর করে , charএ্যারে হিসাবে কাস্ট করে, এটিকে একটি লুপে ফিড দেয় for each। লুপ ভিতরে, আমরা হোক বা না হোক বর্তমান মান আধারিত (হওয়া ASCII int- এ) মান থেকে হয় নিজেই বা 64 বিয়োগ, -inপরিসর 65থেকে 90(অর্থাত, এটি একটি ASCII বড় হাতের অক্ষর এর)। এই মানগুলি পাইপলাইনে রেখে গেছে এবং আমরা অক্ষরবিহীন মানগুলি মুছে ফেলার জন্য একটি -nওট eকোয়ালিটি ব্যবহার করি (কারণ সেগুলি সমস্ত শূন্য। এই সংখ্যাগুলি একটি স্ট্রিংয়ে এনক্যাপসুলেটেড হয় কারণ অ্যারের ডিফল্ট স্ট্রিংফিকেশনটি এটি স্পেস-আলাদা করতে হয়, তাই আমরা এটি বেশ সস্তাভাবে পাই। সেই স্ট্রিংটি পাইপলাইনে রেখে গেছে এবং আউটপুট অন্তর্ভুক্ত।


0

এমএস-এসকিউএল, 133 বাইট

SELECT STRING_AGG(ASCII(substring(upper(s),number+1,1))-64,' ')FROM
spt_values,t WHERE type='P'AND substring(s,number+1,1)LIKE'[a-z]'

আমাদের আইও নিয়ম অনুসারে ইনপুটটি পূর্ব-বিদ্যমান টেবিলের মাধ্যমে নেওয়া হয় T varchar ক্ষেত্র সহ গুলি

এসকিউএল 2017 বা তার পরে প্রয়োজন। এছাড়াও চালানো আবশ্যকmasterডাটাবেসেও , কারণ আমি একটি সিস্টেম টেবিল নামে নিয়ে যাচ্ছি spt_values, যার মাধ্যমে (ফিল্টার করা হয় type='P') 0 থেকে 2047 পর্যন্ত গণনা সংখ্যা থাকে।

মূলত আমি ইনপুট স্ট্রিংটি ব্যবহার করে একটি নম্বর সারণীতে যোগদান করছি SUBSTRING(), যা প্রতিটি স্বতন্ত্র চরিত্রের জন্য পৃথক সারি প্রদান করে। এটি কেবলমাত্র অক্ষর ব্যবহার করে ফিল্টার করা হয় LIKE'[a-z]', তারপরে আমরা তাদের ASCII মান পাই এবং বিয়োগ করব 64. এই সংখ্যাগুলি (এসকিউএল 2017 তে নতুন) ফাংশনটি ব্যবহার করে আবার একটি স্ট্রিংয়ে যুক্ত হয় STRING_AGG


0

পাইথ , 10 বাইট

jdfTmhxGr0

আমি খুব নিশ্চিত যে এটি কিছুটা গল্ফ করা যেতে পারে ... -2 বাইট যদি আমি তালিকা হিসাবে আউটপুট করতে পারি, কিছু উত্তর মনে হয় তবে এটি অনুমানের মধ্যে নেই

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


আপনি সর্বশেষ d( jdfTmhGr0, 10 বাইট) মুছে ফেলতে পারেন ।
মিঃ এক্সকডার

0

সি (জিসিসি) , 67 বাইট

c;f(char*s){for(;*s;)(c=tolower(*s++)-96)>0&c<27&&printf("%d ",c);}

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

প্রতিটি চরকে ছোট হাতের অক্ষরে রূপান্তর করে, কোডটি -96 দ্বারা অফসেট করে এবং যদি এটি 1-সূচিযুক্ত বর্ণমালার সীমার মধ্যে পড়ে তবে অফসেট কোড মুদ্রণ করে


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