একটি স্ট্রিং দেওয়া হয়েছে, এটির সাথে মিলিয়ে কলামের সংখ্যা গণনা করুন


17

এক্সেলে, কলামগুলি এগুলি থেকে শুরু A-Z, AA,AB,AZ,BA,..,BZকরে। এগুলি প্রতিটি সংখ্যার পক্ষে দাঁড়ায় তবে বর্ণমালার স্ট্রিং হিসাবে এনকোড থাকে।

এই চ্যালেঞ্জে আপনাকে বর্ণমালার একটি স্ট্রিং দেওয়া হবে এবং এটির সাথে কলামের সাথে কলাম অবশ্যই গণনা করতে হবে।

কিছু পরীক্ষা:

'এ' 1 প্রদান করে (অর্থ এটি প্রথম কলাম)

'বি' ফেরত 2

'জেড' 26 প্রদান করে

'এএ' 27 ফেরত দেয়

'এবি' 28 ফিরিয়ে দেয়

'এজেড' 52 প্রদান করে

'জেডজেড' 702 ফেরত দেয়

'এএএ' 703 ফেরত দেয়

আপনি ধরে নিতে পারেন যে মূল অক্ষরগুলি কেবলমাত্র দেওয়া হবে।

সবচেয়ে কম বাইট জিতেছে।

শুভকামনা!


সুতরাং ... বর্ণমালা সহ বেস 26?
জো কিং

1
এটি বেশিরভাগ বেস নয় 26 কারণ শূন্য নেই।
জে.ডো

@ জে .ডো আহ, আমার ধারণা আপনি ঠিক বলেছেন আমার দ্রষ্টব্য স্বয়ংক্রিয়ভাবে Z10 হিসাবে বিবেচিত হওয়ার পরে আমি লক্ষ্য করিনি
জো কিং


উত্তর:



7

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

(সূত্রটি ফলাফলের মূল্যায়ন করে, সেল এ 1 থেকে ইনপুট নেয়)

=column(indirect(A1&2

এর সামান্য কম গল্ফযুক্ত সংস্করণটি পোস্ট করতে চলেছি।
এটাকো

1
গুগল শিটগুলিতে আমারও একটি সমাধান রয়েছে যা বিল্টিন কালামের উপর নির্ভর করে না, এটি দেখুন। (তদ্ব্যতীত, আমার খারাপ লাগছে যে আমি যে সমাধানটির জন্য আরও বেশি চেষ্টা করেছি সে সমাধানটি কম মনোযোগ পেয়েছে ... এটি যেভাবেই হোক ভোটদানের ক্ষেত্রে একটি সাধারণ সমস্যা, বিশেষত যখন চ্যালেঞ্জ এইচএনকিউ-তে রয়েছে))
ব্যবহারকারী 202729


4

কোন জাভা প্ল্যাটফর্ম এটিকে সমর্থন করে?
সৈয়দ হামজা হাসান

সাইয়েদ হামজাহসান জাভা ৮ বা আরও বেশি
অলিভিয়ার গ্রাগোয়ার




3

পিএইচপি, 41 38 বাইট

-3 জো কিংকে ধন্যবাদ।

for($c=A;$c!=$argn;$i++)$c++;echo$i+1;

পাইপ হিসাবে চালান -nr

অ্যানারি আউটপুট, 34 বাইট:

1<?for($c=A;$c!=$argn;$c++)echo 1;

পিএইচপি 7.1 প্রয়োজন। ফাইল সংরক্ষণ করুন, পাইপ হিসাবে চালানো -nF




@ টিটুস ঠিক আছে


2

এপিএল (এনএআরএস), ১১ টি চর, ২২ বাইট

{+/26⊥⎕A⍳⍵}

পরীক্ষা

  f←{+/26⊥⎕A⍳⍵} 
  f¨'A' 'AA' 'AAA'
1 27 703 
  f¨'AB' 'ZZ' 'Z'
28 702 26 


1


@ আর্নাউল্ডের পরামর্শগুলিতে প্রসারিত 38 বাইট
শেগি

1

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

(সূত্রটি ফলাফলের মূল্যায়ন করে, সেল এ 1 থেকে ইনপুট নেয়)

=sum(arrayformula(
  (
    code(
      mid(A1,row(indirect("1:"&len(A1))),1)
    )-64
  )*26^row(indirect("1:"&len(A1)))/26

সমস্ত স্পেস কেবলমাত্র স্বচ্ছতার জন্য যুক্ত করা হয়েছে।

নোট

  • এর সদৃশ অপসারণ সম্ভব কিনা তা আমি জানি না row(indirect("1:"&len(A1))
  • যদিও গুগল শীটগুলির একটি decimalকার্যকারিতা রয়েছে, তবে লিপ্যন্তরেণে প্রচুর বাইট লাগবে।


1

জাভা (জেডিকে) , 92 বাইট

static int m(String v){int x=0;for(int i=0;i<v.length();i++)x=x*26+v.charAt(i)-64;return x;}

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

আউটপুট

একটি = 1

বি = 2

জেড = 26

হবে AA = 27

এবি = 28

জেড = 52

ZZ এর = 702

AAA যাচাই = 703


আমি জাভা গল্ফিংয়ের বিশেষজ্ঞ নই, তবে আপনি মুদ্রণের পরিবর্তে ফিরে, লুপগুলির জন্য সরলকরণ, সাদা স্থান সরিয়ে pএবং nভেরিয়েবলগুলি থেকে মুক্তি পেয়ে এটিকে যথেষ্ট গল্ফ করতে পারেন । 92 বাইট!
জো কিং

আশ্চর্যজনক .......
সৈয়দ হামজা হাসান

1
আপনি static7 বাইট অর্জন করতে অপসারণ করতে পারেন । আপনি আরও বাইট বাঁচানোর জন্য এই ফাংশনটিকে ল্যাম্বডায় পরিণত করতে পারেন। আমি আরও মনে করি যে পুনরাবৃত্ত সংস্করণ বাইটগুলি সংরক্ষণ করতে পারে। যাইহোক, এখানে আমার 39 বাইট সমাধান
অলিভিয়ার গ্রাগোয়ার

এটা চমৎকার.
সৈয়দ হামজা হাসান





1

জাপট -h, 10 বাইট

åÈ*26+InYc

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

বা পতাকা ছাড়া। প্রথম বাইটটি সরানো যেতে পারে যদি আমরা অক্ষরের অ্যারে হিসাবে ইনপুট নিতে পারি।

¨c aI̓26

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


ব্যাখ্যা

åÈ             :Cumulatively reduce by passing each character at Y through a function, with an initial total of 0
  *26          :  Multiply current total by 26
     -I        :  Subtract 64
       n       :   Subtracted from
        Yc     :    The codepoint of Y
               :Implicitly output the last element of the resulting array






0

MBASIC , 84 বাইট

1 INPUT S$:L=LEN(S$):FOR I=1 TO L:V=ASC(MID$(S$,I,1))-64:T=T+26^(L-I)*V:NEXT:PRINT T

আউটপুট:

? AZ
 52

? ZZ
 702

? AAA
 703

0

x86 মেশিন কোড, 19 বাইট

00000000: 31c0 8b19 83e3 3f41 b21a f7e2 01d8 3831  1.....?A......81
00000010: 75f0 c3                                  u..

এসেম্বলি:

section .text
	global func
func:				;this function uses fastcall conventions
	xor eax, eax		;reset eax to 0
	loop:
		;ebx=*ecx%64
		mov ebx, [ecx]	;ecx is 1st arg to this func (in fastcall conventions)
		and ebx, 63	;because 64 is a pwr of 2,n%64=n&(64-1)

		;ecx++		get next char in str by incrementing ptr
		inc ecx
		
		;eax=eax*26
		mov dl, 26	;using an 8bit reg is less bytes
		mul edx
		
		;eax+=ebx //(eax=(*ecx%64)+(eax*26))
		add eax, ebx

		;if(*ecx!='\0')goto loop
		cmp byte [ecx], dh ;dh==0
		jne loop
	ret			;return value is in eax

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


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