एक स्ट्रिंग को देखते हुए, उस कॉलम की संख्या की गणना करें जो इसके अनुरूप है


17

एक्सेल में, कॉलम A-Z, AA,AB,AZ,BA,..,BZऔर इसी तरह से होते हैं। वे वास्तव में प्रत्येक संख्या के लिए खड़े होते हैं, लेकिन वर्णमाला के तार के रूप में एन्कोडेड होते हैं।

इस चुनौती में, आपको वर्णमाला की एक स्ट्रिंग दी जाएगी, और आपको उस कॉलम की गणना करनी होगी जो इसके अनुरूप है।

कुछ परीक्षण:

'ए' रिटर्न 1 (जिसका अर्थ है कि यह पहला कॉलम है)

। बी ’रिटर्न 2

'जेड' 26 देता है

'एए' 27 देता है

'एबी' 28 को लौटा

'अज़ ’52 देता है

'ZZ' 702 देता है

A एएए ’703 देता है

आप यह मान सकते हैं कि केवल बड़े अक्षर दिए जाएंगे।

सबसे कम बाइट्स जीतते हैं।

सौभाग्य!


तो ... आधार 26 वर्णमाला के साथ?
जो किंग

1
यह काफी आधार 26 नहीं है क्योंकि कोई शून्य नहीं है।
जे। डी। ओ।

@ जे। डी आह, मुझे लगता है कि तुम सही हो। मैं अपने समाधान के बाद से Z10 के रूप में वैसे भी स्वचालित रूप से इलाज के बाद से नोटिस नहीं किया था
जो राजा


जवाबों:



7

Google शीट, 21 बाइट्स

(सूत्र परिणाम का मूल्यांकन करता है, सेल A1 से इनपुट लेता है)

=column(indirect(A1&2

बस इसके बारे में थोड़ा कम गोल्फ वाला संस्करण पोस्ट करने के बारे में।
अताको

1
मेरे पास Google शीट्स में एक समाधान भी है जो बिलिन कोलम पर भरोसा नहीं करता है, इसे देखें। (इसके अलावा, मुझे बुरा लगता है कि जिस समाधान पर मैंने अधिक प्रयास किया, उस पर कम ध्यान दिया जाता है ... यह वैसे भी मतदान के साथ एक विशिष्ट समस्या है, खासकर जब चुनौती एचएनक्यू पर है।)
user202729

6

आर , 48 43 बाइट्स

-5 बाइट्स, @Giuseppe के लिए धन्यवाद, उसी तर्क का उपयोग करते हुए, लेकिन एक प्रोग्राम के रूप में जो ncharकॉल को समाप्त करता है ।

for(i in utf8ToInt(scan(,"")))F=F*26+i-64;F

इसे ऑनलाइन आज़माएं!






3

PHP, 41 38 बाइट्स

-3 जो किंग को धन्यवाद।

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

साथ पाइप के रूप में चलाएँ -nr

एकतरफा उत्पादन, 34 बाइट्स:

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

PHP 7.1 की आवश्यकता है। फ़ाइल में सहेजें, पाइप के रूप में चलाएं -nF


@JoKing हाँ, यह किया जा सकता है: sandbox.onlinephpfunctions.com/code/…
Ismael Miguel


@Titus ठीक तो


2

एपीएल (एनएआरएस), 11 चार्ट, 22 बाइट्स

{+/26⊥⎕A⍳⍵}

परीक्षा

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



1

Google शीट, 100 बाइट्स

(सूत्र परिणाम का मूल्यांकन करता है, सेल A1 से इनपुट लेता है)

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

सभी रिक्त स्थान केवल स्पष्टता के लिए जोड़े जाते हैं।

ध्यान दें

  • मुझे नहीं पता कि क्या इसका दोहराव दूर करना संभव है row(indirect("1:"&len(A1))
  • हालाँकि Google शीट में एक decimalफ़ंक्शन है, लिप्यंतरण में बहुत सारे बाइट्स होंगे।

1

एपीएल + विन, 12 बाइट्स

सूचकांक मूल १।

26⊥¯65+⎕av⍳⎕

इसे ऑनलाइन आज़माएं! दरियाल क्लासिक के सौजन्य से

स्पष्टीकरण:

⎕av⍳⎕ Prompts for input and gets Ascii integer value for each character

¯65+ subtracts 65 to give integers 1-26 for A-Z

26⊥ converts resulting vector from base 26 to single integer

1

जावा (JDK) , 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

ए.ए. = 27

AB = 28

AZ = 52

ZZ = 702

एएए = 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

इसे ऑनलाइन आज़माएं!


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.