একটি সেল স্বরলিখন গণনা করুন


16

সুতরাং আমরা সকলেই স্প্রেডশিট 'এ 1' সেল নোটেশনের সাথে আশাবাদী।

এটি কেবল গ্রিডের মধ্যেই বলা সেলটির অবস্থানের একটি বর্ণমালা প্রতিনিধিত্ব। চিঠিটি গুলি ঘরের কলামের অবস্থানের প্রতিনিধিত্ব করে এবং সংখ্যাটি সারিটি উপস্থাপন করে।

'বর্ণ' অংশে 26 বর্ণের ইংরেজি বর্ণমালার 1 বা একাধিক অক্ষর থাকতে পারে, এর সবগুলি অবশ্যই মূল বর্ণের হতে হবে। এই মানচিত্রটি 26-অ্যাডিক বাইজিক সংখ্যাটি ব্যবহারের মাধ্যমে সংখ্যাগুলিতে। 'সংখ্যা' অংশটি কোনও ধনাত্মক, শূন্য-শূন্য পূর্ণসংখ্যার সমন্বয়ে গঠিত হতে পারে।


চ্যালেঞ্জ, এমন একটি প্রোগ্রাম লিখুন যা কোনও সেলকে একটি একক স্ট্রিং হিসাবে A1 স্বরলিপি দেয়, একটি স্থান হিসাবে এবং তারপরে সারি সংখ্যা অনুসারে একটি সংখ্যা হিসাবে উপস্থাপিত কলামের অবস্থান সম্বলিত একটি স্ট্রিং আউটপুট করতে পারে।

নমুনা ইনপুট / নীচে আউটপুট:

A1
>>1 1
B10
>>2 10
AC4 
>>29 4
AAC753
>>705 753
F123
>>6 123
GL93
>>194 93

এটি আমার প্রথম চ্যালেঞ্জ, সুতরাং মানদণ্ডের তুলনামূলক সরলতা এবং সম্ভাব্য দরিদ্রতা।

সম্পাদনা : স্ট্রিং অবশ্যই সংখ্যার পরে অক্ষর এবং বিজয়ী মানদণ্ড হ'ল সংক্ষিপ্ত কোড দৈর্ঘ্য (যদি এটি কোনও জিনিস হতে পারে)

সম্পাদনা : সম্পর্কে কিছু এই কিন্তু একটি ভিন্ন শুরুর সূচকের সাথে বিপরীত প্রক্রিয়া আছে। কিছু যুক্তিযুক্ত হতে পারে যে এই ঘটনাটি লিঙ্কযুক্ত ধাঁধাটিকে আরও আকর্ষণীয় করে তোলে।


উদাহরণস্বরূপ, বর্ণগুলি এবং সংখ্যাগুলি সমন্বিত একটি অ্যারে হিসাবে আমরা কী ইনপুটটি গ্রহণ করতে পারি:["A", "1"]
স্টিফেন

1
@ স্টেপহেন নং এটি অক্ষর এবং সংখ্যা উভয় সমন্বিত একক স্ট্রিং হতে হবে। আমার সম্ভবত এটিও যুক্ত হওয়া উচিত যে স্ট্রিংটি সংখ্যার পরে বর্ণের ক্রম হতে হবে।
ডিবিআর

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

3
@ ডিয়ানব্রান্ট এটি আপনার উপর নির্ভর করে এবং অবশ্যই আপনি চ্যালেঞ্জটিকে আরও কঠিন করতে কঠোর বিন্যাস প্রয়োগ করতে পারেন। তবে লোকেরা সাধারণত ফর্ম্যাটের তুলনায় প্রকৃত গণনাগুলির মধ্যে
লুইস মেন্ডো

4
এটি কারণ ফর্ম্যাটটি প্রকৃত চ্যালেঞ্জের সাথে নিজের কোনও মূল্য যুক্ত করে না
আদনান ১

উত্তর:



20

মাইক্রোসফ্ট এক্সেল, 43 বাইট।

=COLUMN(INDIRECT(A1))&" "&ROW(INDIRECT(A1))

আমি নিজেকে সাহায্য করতে পারি না, আমাকে কাজের জন্য সঠিক সরঞ্জামটি ব্যবহার করতে হয়েছিল। এ 1 এ ইনপুট নেয়।

পরীক্ষার কেস


11

মাইক্রোসফ্ট এক্সেল, 40 বাইট

ব্রাসিলিয়ান পর্তুগিজ ভাষার সংস্করণ।

=COL(INDIRETO(A1))&" "&LIN(INDIRETO(A1))

এটিাকোর সমাধানটির অনুবাদিত সংস্করণ (এবং তাই গল্ফড) ।


আমি মনে করতে পারি না এক্সেল শিটগুলির মতো এটির অনুমতি দেয় কিনা তবে আপনি কি অন্য উত্তরটিতে @ ইউরিলের পরামর্শটি ব্যবহার করতে পারেন এবং শেষ 2 টি বন্ধনী হারিয়ে ফেলতে পারেন?
dbr

এই পরামর্শটি (ডানদিকের প্রথম বন্ধনী বাদ দিয়ে) এক্সেলে এমন একটি সতর্কতা ফেলেছে যা আপনাকে এগিয়ে যাওয়ার জন্য নিশ্চিত করতে হবে, সুতরাং আমি মনে করি না এটি এখানে অনুমোদিত।
pajonk

আহ আমি দেখি. চাদরের তুলনায় এটি আলাদা।
ডিবিআর

7

পাইথন 2 , 94 91 73 বাইট

-3 বাইট জোনাথন অ্যালানকে
ধন্যবাদ -১৮ বাইট ধন্যবাদ tsh

s=input().strip
a=s(`3**39`);t=0
for n in a:t=t*26+ord(n)-64
print t,s(a)

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

এই নির্যাতনের উপায় যে .stripকাজ, ভাবে সংখ্যা বসিয়ে সরানোর wtih a=s(`3**39`)যেখানে `3**39`ডিজিটের থেকে জেনারেট করতে শুধু একটি সংক্ষিপ্ত পথ 0থেকে 9, এই শুধুমাত্র অক্ষর সংরক্ষণ করবে aযে নম্বর থেকে অক্ষর স্ট্রিপ ব্যবহার করা হবেs(a)


আমি মনে করি না যে stripঅনন্য অক্ষর হওয়ার জন্য ইনপুটটির প্রয়োজন আছে , তাই 3**39একই কাজ করা উচিত।
জোনাথন অ্যালান


6

গুগল শিটস, 43 বাইট

=COLUMN(INDIRECT(A1))&" "&ROW(INDIRECT(A1))

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

A1ইনপুট সেল। আশাকরি উপরের লিঙ্কটি কাজ করে, আমি এর আগে গুগল শীটগুলির সাথে কোড গল্ফটি কখনও চেষ্টা করি নি।


1
@ATaco এর কারণ নেই কারণ সদৃশ উত্তর সহাবস্থান থাকতে পারে।
কনর ও'ব্রায়েন

1
গুগল শীট এবং মাইক্রোসফ্ট এক্সেলের উত্তরগুলির উপস্থিতি আমাকে খুশি করে।
dbr

5
আপনি =COLUMN(INDIRECT(A1))&" "&ROW(INDIRECT(A141 বাইট জন্য করতে পারেন । চাদরগুলি সঠিক প্যারেনগুলি হারিয়েছে।
উরিল

5

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

x=>x.replace(/\D+/,s=>[...s].reduce((n,v)=>n*26+parseInt(v,36)-9,0)+' ')


2

ডায়ালগ এপিএল, 44 বাইট

(26⊥¯65+⎕AV⍳(a~⎕D)),⎕A~⍨a←⍞

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


1
চারপাশে প্রথম বন্ধনী সরান (a~⎕D)। এর ⎕Aপরিবর্তে সন্ধান করুন ⎕AV। ট্যাসিট তৈরি করুন এর তর্ক অদলবদল ,। কেবল 16 বাইটে নেমে যায়:~∘⎕A,⍨26⊥⎕A⍳~∘⎕D
17á


1

পার্ল 5 , 35 + 1 (-পি) = 36 বাইট

map$r=$r*26-64+ord,/\D/g;s/\D*/$r /

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

mapবিবৃতি একইরূপে একটি base26 নম্বর এবং ধর্মান্তরিত এটা দশমিক মত কলাম। প্রতিস্থাপনটি অক্ষরের সাথে সংখ্যার সাথে প্রতিস্থাপন করে। ইনপুট এবং আউটপুট -pপতাকাটিতে অন্তর্ভুক্ত।


1

গণিত, 108 বাইট

StringReplace[c:LetterCharacter..~~r:DigitCharacter..:>ToString@FromDigits[ToCharacterCode@c-64,26]<>" "<>r]

অপারেটর ফর্ম StringReplaceযার cস্ট্রিংয়ের বর্ণানুক্রমিক অংশ নেয় , এটিকে অক্ষর কোডের তালিকায় রূপান্তর করে, 64প্রতিটি কোড পয়েন্ট থেকে বিয়োগ করে, ফলাফলকে একটি বেস 26পূর্ণসংখ্যা হিসাবে ব্যাখ্যা করে , সেই পূর্ণসংখ্যাকে একটিতে রূপান্তর করেString , তার পরে StringJoinসংখ্যার অংশ অনুসারে স্থান স্থানr

একটি রেজেক্স ব্যবহার করে ( 108বাইটগুলিও):

StringReplace[RegularExpression["([A-Z]+)(.+)"]:>ToString@FromDigits[ToCharacterCode@"$1"-64,26]<>" "<>"$2"]

1
ToCharacterCode@c-64কখনও কখনও হ্রাস করা যেতে পারে LetterNumber@c। যদিও ইনপুটটি যখন একক অক্ষর হয় তখন LetterNumberআউটপুট মোড়ানো হয় না List
জংহওয়ান মিনি মিনিট

1

জেলি ,  16  15 বাইট

ØAɓi@€ḟ0ḅ26,⁸Kḟ

একটি সম্পূর্ণ প্রোগ্রাম স্ট্রিংটিকে আর্গুমেন্ট হিসাবে গ্রহণ করে ফলাফল মুদ্রণ করে

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

কিভাবে?

ØAɓi@€ḟ0ḅ26,⁸Kḟ - Main link: list of characters, ref  e.g. "AAC753"
ØA              - uppercase alphabet yield               = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  ɓ             - dyadic chain separation, call that B and place it on the right
   i@€          - first index for €ach (swap arguments)    [1,1,3,0,0,0]
      ḟ0        - filter discard zeros                     [1,1,3]
        ḅ26     - convert from base 26 to integer           705
            ⁸   - chain's left argument (ref)              "AAC753"
           ,    - pair                                     [705,['A','A','C','7','5','3']]
             K  - join with spaces                         [705,' ','A','A','C','7','5','3']
              ḟ - filter discard those in right (B)        [705,' ','7','5','3']
                - implicit print                        >>>705 753

দ্রষ্টব্য: বেস রূপান্তর পরমাণু ব্যবহার করে সংখ্যার তালিকা থেকে রূপান্তর স্থানগুলি প্রত্যাশিত ব্যাপ্তির বাইরে থাকতে দেয়, তাই বলে, [2,26,1]( "BZA") ব্যবহার করে রূপান্তরটি 2 × 26 2 + 26 × 26 1 + 1 × 26 0 =ḅ26 হিসাবে গণনা করা হয় 2029 যদিও "প্রত্যাশিত" প্রতিনিধিত্ব হত ।[3,0,1]


2
@ ডিন ব্রান্ট এত তাড়াতাড়ি উত্তর গ্রহণ করা স্বাভাবিক নয় (বেশিরভাগ সময় এটি এক সপ্তাহ ছেড়ে দিন) - এটি অন্যকে প্রতিদ্বন্দ্বিতা থেকে নিরুৎসাহিত করতে পারে। আমি 05AB1E বা অন্য কোনও গল্ফ ভাষাতে এই মারধর দেখে অবাক হব না ...
জনাথন অ্যালান

পয়েন্ট নেওয়া হয়েছে। এখনও আমার
পথটি

সমস্যা নেই! পিপিসিজিতে আপনাকে স্বাগতম, এবং চমৎকার প্রথম পোস্ট :)
জোনাথন অ্যালান

1

গণিত, 77 72 69 68 বাইট

#/.{a__,b__?DigitQ}:>{f=FromDigits;f[LetterNumber@{a},26],f[b<>""]}&

অক্ষরের একটি তালিকা নেয়।

ওল্ফ্রাম স্যান্ডবক্সে এটি ব্যবহার করে দেখুন

ব্যবহার

#/.{a__,b__?DigitQ}:>{f=FromDigits;f[LetterNumber@{a},26],f[b<>""]}&[{"G", "L", "9", "3"}]

{194, 93}

অথবা

#/.{a__,b__?DigitQ}:>{f=FromDigits;f[LetterNumber@{a},26],f[b<>""]}&[Characters["GL93"]]

{194, 93}

ব্যাখ্যা

#/.

ইনপুট প্রতিস্থাপন ...

{a__,b__?DigitQ}

দুটি ক্রম aএবং b(1 বা একাধিক উপাদান সহ) তালিকা রয়েছে যেখানেb কেবল অঙ্কের অক্ষর সমন্বিত থাকে ... (ম্যাথমেটিকা ​​অলস প্যাটার্ন ম্যাচিং ব্যবহার করে, সুতরাং এর জন্য কোনও চেকের প্রয়োজন নেই a)

:>

মধ্যে ...

f=FromDigits;

সেট fঅঙ্ক-থেকে-পূর্ণসংখ্যার রূপান্তর ফাংশনে ।

LetterNumber@{a}

রূপান্তর aবর্ণের সংখ্যায় (ক -> ১, খ -> ২, ইত্যাদি)।

{f[ ... ,26],f[b<>""]}

উপরেরটি বেস -26 থেকে দশকে রূপান্তর করুন bএবং দশমিক রূপান্তর করুন।



1

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

[A-Z]
$& 
[T-Z]
2$&
[J-S]
1$&
T`_L`ddd
\d+
$*
{`\G1(?=.* .* )
26$*
}` (.* )
$1
1+
$.&

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

[A-Z]
$& 

একে অপরের চিঠিগুলি এবং চূড়ান্ত নম্বর পৃথক করুন।

[T-Z]
2$&
[J-S]
1$&
T`_L`ddd

অক্ষরকে দশমিক রূপান্তর করুন।

\d+
$*

সমস্ত কিছু অ্যানারিতে রূপান্তর করুন।

{`\G1(?=.* .* )
26$*
}` (.* )
$1

কমপক্ষে তিনটি সংখ্যা থাকা অবস্থায় প্রথমটিকে 26 দ্বারা গুণিত করুন এবং এটি দ্বিতীয়টিতে যুক্ত করুন।

1+
$.&

সবকিছুকে দশমিক রূপান্তর করুন।



1

> <>, 42 বাইট

0i88*-:0(?\$2d**+!
$n88*+48*o\
oi:0(?;   >

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

ব্যাখ্যা:

0i88*-:0(?\$2d**+! Read in the Letters part of the input
0                  Push an initial 0 to the stack
 i                 Read a character of input
  88*-             Subtract 64 to get from the ascii code to its value ('A'=1,'B'=2 etc.)
      :0(?\        If the value is less than 0, break out of this loop
           $2d**   Multiply our accumulator by 26
                +  Add our new number to the accumulator
                 ! don't add a new zero to the stack

উপরের লুপটি ভাঙার আগে সংখ্যার অংশের প্রথম সংখ্যায় (যেমন "" AB34 "তে '3') পড়বে এবং ইতিমধ্যে এটি থেকে sub৪ বিয়োগ করবে, সুতরাং পরবর্তী বিট কোডটি তার সাথে মোকাবেলা করতে হবে

$n88*+48*o\        Output a space, and prepare to output the first number we read in during the previous loop
          \        Loop round to the left end of this line
$n                 Output the value of the letters part as a number
  88*+             Add the 64 we subtracted from the first number
      48*o         Output a space
          \        Enter the next loop

এই লুপটি এমন কোনও অক্ষরের আউটপুট দিয়ে শুরু হয় যা হয় হয় প্রথম লুপ দ্বারা পঠিত প্রথম অক্ষর বা এই লুপটির পূর্ববর্তী পুনরাবৃত্তি দ্বারা পঠিত অক্ষর।

oi:0(?;   >        Output the numbers part, by just echoing it
          >        Loop round to the start of the line
o                  Output the character
 i                 Read in the next character
  :0(?;            If the value read in was less than 0, terminate

1

রুবি, 64 61 59 বাইট

->s{s.sub(/\D+/){"#{$&.bytes.reduce(0){|t,b|t*26+b-64}} "}}

মান কালি ধন্যবাদ 2 বাইট সংরক্ষণ করা।


1
$&এটি সর্বশেষ রেজেক্স ম্যাচ, সুতরাং এটি m2 বাইট সংরক্ষণের পরিবর্তে ব্যবহার করুন ।
মূল্য কালি

1

এক্সেল-ভিবিএ তাত্ক্ষণিক উইন্ডো, 44 45 বাইট ( 36 35)

Set v=Range([A1]):?trim(v.Column &" "&v.Row);

ট্রেলিং নিউলাইনটি দমন করতে 1 বাইট যুক্ত করা হয়েছে


বা 35 জন্য নেতৃস্থানীয় সাদা স্থান সহ

Set v=Range([A1]):?v.Column""&v.Row

1 টেলরস্কটকে ধন্যবাদ 1 বাইট সংরক্ষিত!

উভয়ই সেল এ 1 থেকে ভিবিই ইমিডিয়েট উইন্ডোতে আউটপুট নেয়


1
আমি এগিয়ে যাব এবং বলব যে শীর্ষস্থানীয় শ্বেত স্পেস উত্তরটি হ'ল এটি একটি বৈধ প্রতিক্রিয়া কারণ এটি Trim()প্রায় সমস্ত সংখ্যার উত্তরগুলি ব্যবহার করতে বাধ্য করবে - এবং আমি Set v=Range([A1]):?v.Column""&v.Rowআপনার বর্তমান সমাধানটি নিয়ে যেতে পারব না
টেলর স্কট

এছাড়াও, হাহাকার, আমি বিশ্বাস করতে পারি না আমি এই প্রশ্নটি প্রকাশের পরে মিস করেছি!
টেলর স্কট

@ টেলরস্কোট "" "ব্যবহার করে ওহ দুর্দান্ত কৌশল - আমার ধারণা অনুমান যে এক্সেলটি সন্নিবেশ করতে জানত ;যখন নিম্নলিখিত অক্ষরটি Columnরুটিন নামের অংশ হতে পারে না। আমি ভাবছি যদি এমন কোনও চরিত্র আছে যা একই কাজ করতে পারে, সম্ভবত না। হ্যাঁ, আমি অনুমান করে রেখেছিলাম যে শীর্ষস্থানটি বেশিরভাগ কুইসের জন্য গ্রহণযোগ্য হবে তবে এইটির জন্য আমি মনে করি এটি আরও একটি "এই সঠিক স্ট্রিংটি মুদ্রণ করুন "। আমি জিজ্ঞাসা করেছি (প্রশ্নের শেষ মন্তব্য) এবং কোনও অগ্রণী স্থান বা নিউলাইন বলা হয়নি ।
লোভ

1
এছাড়াও, যখন আমি প্রশ্নের শিরোনাম দেখলাম, আমি ততক্ষনে জানলাম যে আপনার বা অন্য কেউ ইতিমধ্যে না থাকলে আমার যেতে হবে! অন্যান্য এক্সেল-ভিত্তিক উত্তরগুলি যেমন বলে, কাজের জন্য সঠিক সরঞ্জাম
লোভ

1

লুয়া, 127 বাইট

কিছু দুর্দান্ত স্ট্রিং ম্যানিপুলেশন সেখানে যাচ্ছে, আমি এমন কিছু ফাংশন ব্যবহার করছি যা সাধারণত লুয়া: ডি তে গল্ফ করার সময় কখনও ব্যবহৃত হয় না। গল্ফ করার সর্বোত্তম উপায় হ'ল প্রতিটি অক্ষরের অবস্থান ধরে রাখতে সক্ষম হয়ে ইনপুটটির কলাম অংশটি পুনরুক্ত করার জন্য অন্য কোনও উপায় খুঁজে পাওয়া। আমি করিনি didn't '

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

I=...l=I:gsub("%d",""):reverse()r=0
for i=1,#l
do
r=r+(l:sub(i,i):byte()-64)*math.pow(26,i-1)end
print(r.." "..I:gsub("%a",""))

ব্যাখ্যা

I=...                       -- shorthand for the input
l=I:gsub("%d","")           -- shorthand for the column part
   :reverse()               -- letters are put in reverse order to calculate their weight
r=0                         -- column number
for i=1,#l                  -- iterate over the letters of the input
do
  r=r+                      -- add to the column number
      (l:sub(i,i):byte()-64)-- the byte value of the current letter minus 64 (A=1 this way)
      *math.pow(26,i-1)     -- then apply its weight in base 26
end
print(r                     -- output the column number
        .." "               -- a space
        ..I:gsub("%a",""))  -- and the row number
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.