এই সংখ্যাটি কোন বেসে রয়েছে?


31

এখানে একটি দুর্দান্ত সহজ চ্যালেঞ্জ:

একটি স্ট্রিং দেওয়া হয়েছে যা একটি অজানা বেসে একটি সংখ্যা উপস্থাপন করে, সংখ্যাটি যে সর্বনিম্ন সম্ভাব্য বেস হতে পারে তা নির্ধারণ করুন The স্ট্রিংটি কেবল এতে থাকবে 0-9, a-z । আপনি যদি চান, আপনি ছোট হাতের পরিবর্তে বড় হাতের অক্ষর নিতে বেছে নিতে পারেন তবে দয়া করে এটি নির্দিষ্ট করুন। দশমিকের মধ্যে আপনাকে এই সর্বনিম্ন সম্ভাব্য বেসটি আউটপুট করতে হবে।

এখানে আরও দৃ concrete় উদাহরণ। যদি ইনপুট স্ট্রিংটি "01234" হত, তবে এই সংখ্যাটি বাইনারি হওয়া অসম্ভব, যেহেতু 2, 3 এবং 4 সমস্ত বাইনারি-তে সংজ্ঞায়িত। একইভাবে, এই সংখ্যাটি বেস 3, বা বেস 4 এ থাকতে পারে না সুতরাং, এই সংখ্যাটি অবশ্যই বেস -5, বা উচ্চতর বেসে থাকতে হবে, সুতরাং আপনার '5' আউটপুট করা উচিত।

আপনার কোডটি অবশ্যই বেস 1 (অ্যানারি, সমস্ত '0 এর) এবং বেস 36 (' 0-9 'এবং' a-z ') এর মধ্যে যে কোনও বেসের জন্য কাজ করবে।

আপনি ইনপুট নিতে পারেন এবং যে কোনও যুক্তিসঙ্গত ফর্ম্যাটে আউটপুট সরবরাহ করতে পারেন। বেস-রূপান্তর অন্তর্নির্মিত অনুমোদিত। যথারীতি মানক লুফোলগুলি প্রয়োগ হয় এবং বাইটের মধ্যে সংক্ষিপ্ত উত্তরটিই বিজয়ী!

পরীক্ষার আইও:

#Input          #Output
00000       --> 1
123456      --> 7
ff          --> 16
4815162342  --> 9
42          --> 5
codegolf    --> 25
0123456789abcdefghijklmnopqrstuvwxyz    --> 36

8
আমি কি বেস 36 এ আউটপুট দিতে পারি?
ফাঁস নুন

9
@ লাকি নুন গীজ, আমি আশা করি না।
ডেনিস

4
@LeakyNunYou must output this lowest possible base in decimal.
DJMcMayhem

3
@ রোহানঝুনঝুনওয়ালা যদি আপনার ভাষাগুলি স্ট্রিংয়ের সমতুল্য হয় তবে কেন দেখছি না।
ডিজেএমসিএমহেম

3
সাধারণত অ্যানারি সমস্ত 1s হয়, এবং নেতৃস্থানীয় শূন্যগুলি কোনও অবস্থান ভিত্তিক সংখ্যার সিস্টেমের জন্য মানক নয়।
হার্মিং বন্ধ করুন

উত্তর:


16

জেলি , 4 বাইট

ṀØBi

বড় হাতের অক্ষর প্রয়োজন। এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

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

ṀØBi  Main link. Arguments: s (string)

Ṁ     Yield the maximum of s.
 ØB   Yield "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".
   i  Find the 1-based index of the maximum in that string.

1
এটি আসলে by বাইট নয়, ৪ নয় The প্রথম 2 টি অক্ষরটি বহু-বাইট।
নিকোমাক

14
@ নিকোমাক এই উত্তরটি জেলি কোড পৃষ্ঠাতে এনকোড করা হয়েছে , যেখানে এই সমস্ত অক্ষরকে প্রতিটি বাইট হিসাবে 1 টি এনকোড করা হয়।
লুভজো

26

পাইথন, 27 22 বাইট

lambda s:(max(s)-8)%39

এর জন্য ইনপুটটি বাইট্রেস্টিং (পাইথন 3) বা বাইটারি (পাইথন 2 এবং 3) হওয়া দরকার।

5 বাইট বন্ধ করে গল্ফ করার জন্য @ অ্যালেক্সি টোরহামোকে ধন্যবাদ!

আইডিয়নে এটি পরীক্ষা করুন ।

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

আমরা স্ট্রিং সর্বাধিক গ্রহণ দ্বারা শুরু। এই অক্ষরের কোড পয়েন্টগুলি অঙ্কের কোড পয়েন্টগুলির চেয়ে বেশি, এই সর্বাধিক অক্ষরটি সর্বাধিক বেস 36 সংখ্যাও।

কোড বিন্দু '0' - '9' হয় 57 - 48 , তাই আমরা বিয়োগ আবশ্যক 48 সংশ্লিষ্ট ডিজিট গনা তাদের কোড পয়েন্ট থেকে, অথবা 47 সর্বনিম্ন সম্ভব বেস গনা। একইভাবে, বর্ণের কোড পয়েন্ট 'একটি' - 'জেড' হয় 97 - 122 । যেহেতু 'একটি' মান অঙ্ক প্রতিনিধিত্ব করে 10 , আমরা বিয়োগ আবশ্যক 87 সংশ্লিষ্ট ডিজিট গনা তাদের কোড পয়েন্ট থেকে, অথবা 86 সর্বনিম্ন সম্ভব বেস গনা। এটি অর্জনের একটি উপায় নিম্নরূপ।

মধ্যে পার্থক্য 97 এবং 58 ( ':' পর চরিত্র '9' ) হল 39 , তাই কোড পয়েন্ট মডিউল গ্রহণ 39 বিয়োগ অর্জন করতে পারেন। যেহেতু 48% 39 = 9 , এবং অক্ষরের জন্য কাঙ্ক্ষিত ফলাফল '0' হয় 1 , তাই আমরা প্রথমেই বিয়োগ 8 ফলাফলের মডিউল গ্রহণের পূর্বে 39'ইউ'% 39 = 117% 39 = 0 থেকে যেহেতু প্রথমে বিয়োগ করা প্রয়োজন ।

c    n    n-8    (n-8)%39
0    48    40     1
1    49    41     2
2    50    42     3
3    51    43     4
4    52    44     5
5    53    45     6
6    54    46     7
7    55    47     8
8    56    48     9
9    57    49    10
a    97    89    11
b    98    90    12
c    99    91    13
d   100    92    14
e   101    93    15
f   102    94    16
g   103    95    17
h   104    96    18
i   105    97    19
j   106    98    20
k   107    99    21
l   108   100    22
m   109   101    23
n   110   102    24
o   111   103    25
p   112   104    26
q   113   105    27
r   114   106    28
s   115   107    29
t   116   108    30
u   117   109    31
v   118   110    32
w   119   111    33
x   120   112    34
y   121   113    35
z   122   114    36

যদি আপনি এটিকে পাইথন 3 করেন এবং ইনপুটটিকে বাইট স্ট্রিং হিসাবে নেন তবে আপনি ড্রপ ord()করে 3 টি বাইট জিততে পারবেন । :)
আলেকসি তোড়হামো

ভাল যুক্তি! আমাকে ওপি জিজ্ঞাসা করুন।
ডেনিস

3
@ আলেকসী তোড়হামো নুবুউইউইউও ইউ ডিস না
Rɪᴋᴇʀ

20

পাইথন, 25 বাইট

lambda x:int(max(x),36)+1

একটি ল্যামডা যে স্ট্রিং লাগে নির্ধারণ x। স্ট্রিং বৃহত্তম অঙ্ক (ডিজিট উপরের অক্ষরগুলি, পাইথন এর ডিফল্ট দ্বারা সাজানো হিসেবে) অনুসন্ধান করে, এবং বেস 36 জোড়ে 1 ধর্মান্তরিত, কারণ 8বেস 8 নয়।


11

হাস্কেল, 34 বাইট

f s=length['\t'..maximum s]`mod`39

mod(ord(c)-8,39)ডেনিস থেকে ধারণা ব্যবহার করে ।

41 বাইট

g '0'=1
g 'W'=1
g x=1+g(pred x)
g.maximum

45 বাইট:

(`elemIndex`(['/'..'9']++['a'..'z'])).maximum

আউটপুট পছন্দ Just 3


6

চেদার , 34 29 21 বাইট

ডেনিসকে 8 বাইট সংরক্ষণ করে !!!

s->(s.bytes.max-8)%39

ছোট হাতের অক্ষর ব্যবহার করে

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

ব্যাখ্যা

s -> (      // Input is `s`
  s.bytes    // Returns array of char codes
   .max      // Get maximum item in array
) % 39      // Modulus 39

1
অথবা আপনি কেবল
ইনপুটটির

12
@ ডিজেএমসিএমহেম .___। আমি জানতাম না যে আমার নিজস্ব ভাষাও এটি করতে পারে
ডাউনগোট

(-)&8তার বদলে কেমন হয় n->n-8?
কনর ও'ব্রায়েন

@ কনরও'ব্রায়ান> _> _> _> আমি এখনও এটি করতে পারি নি। আমি কেবল এটি করার পরিকল্পনা করছিলাম এবং তারপরে এই চ্যালেঞ্জটি পোস্ট করা হয়েছিল। মূলত ফাংশনের প্রথম যুক্তিতে f&nবন্ধনগুলি n
ডাউনগোট

পছন্দ করুন > _>
কনর ও'ব্রায়েন

6

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

{¤36ö>

আপার ক্ষেত্রে চিঠি নেয়।

ব্যাখ্যা

{       # sort
 ¤      # take last
  36ö   # convert from base 36 to base 10
     >  # increment

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


আমার এনিবেটকে 05AB1E দিয়ে ক্ষমা করুন, তবে আপনি কি FROM বেস 36 (বেস 10 তে) রূপান্তর করতে চান?
কেতা

@ কিতা আপনি অবশ্যই সঠিক। আমার খারাপ।
Emigna


5

জুলিয়া, 22 বাইট

!s=(maximum(s)-'')%39

উদ্ধৃতিগুলির মধ্যে একটি বিএস অক্ষর (0x08) রয়েছে। এটি অনলাইন চেষ্টা করুন!


কি করে -''?
ডাউনগোট

এটি কোড পয়েন্ট থেকে 8 টি বিয়োগ করে একটি পূর্ণসংখ্যা ফেরত দেয়।
ডেনিস

4

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

s=>parseInt([...s].sort().pop(),36)+1

সম্পাদনা করুন: @ এডক 65 এর জন্য 4 টি বাইট সংরক্ষণ করা হয়েছে।


ব্যবহার pop()4 সেভ করতে
edc65

@ edc65 আমি বিশ্বাস করতে পারি না এটি জাভাস্ক্রিপ্ট টিপসের আওতায় নেই।
নিল

3

হাস্কেল, 55 40 বাইট

f=(\y->mod(y-8)39).Data.Char.ord.maximum

ধন্যবাদ ডেনিস তার পদ্ধতির জন্য। (এটি নিন, @ xnor;))


আমি মনে করি আপনি f=38 বাইটের জন্য অপসারণ করতে পারেন যেহেতু fসুস্পষ্ট যুক্তি গ্রহণ করবেন না।
সাইয়েস

3

পার্ল 6: 18 বাইট

{:36(.comb.max)+1}

একটি ল্যাম্বদা সংজ্ঞায়িত করে যা একটি একক স্ট্রিং আর্গুমেন্ট গ্রহণ করে এবং পূর্ণসংখ্যা ফেরত দেয়। এটি স্ট্রিংগুলিকে অক্ষরগুলিতে বিভক্ত করে, "সর্বাধিক "টিকে খুঁজে বের করে, এটি বেস ৩ base এ রূপান্তর করে, ১ যোগ করে।

{(.ords.max-8)%39}

এটি ডেনিসের মডুলো পদ্ধতির ব্যবহার করে। একই দৈর্ঘ্য।


2

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

O`.
.\B

{2`
$`
}T01`dl`_o
.

এটি অনলাইন চেষ্টা করুন!(প্রথম লাইন একটি লাইনফিড-বিচ্ছিন্ন পরীক্ষা স্যুট সক্ষম করে))

ব্যাখ্যা

O`.

এটি ইনপুটটির অক্ষরগুলি সাজায়।

.\B

এটি শেষ ব্যতীত সমস্ত অক্ষর সরিয়ে দেয়, তাই প্রথম দুটি পর্যায়ে সর্বাধিক অক্ষর সন্ধান করে।

{2`
$`
}T01`dl`_o

এটি দুটি ধাপ যা লুপ তৈরি করে। প্রথম এক প্রথম অক্ষর এবং দ্বিতীয় একটি "decrements" এটা (যেমন প্রতিস্থাপন সদৃশ xসঙ্গে w, aসঙ্গে 9এবং 1সঙ্গে 0)। দ্বিতীয় স্তরটি প্রথম চরিত্র হিসাবে শূন্যের মুখোমুখি হয়, এটি পরিবর্তে এটি সরিয়ে দেয়। এটি উপরের প্রান্তে দেওয়া বিভিন্ন অক্ষর তৈরি করার জন্য একটি স্ট্যান্ডার্ড কৌশল। অতএব, 0এটি সর্বাধিক অঙ্ক থেকে সমস্ত "অঙ্ক" উত্পন্ন করে ।

.

পরিশেষে, আমরা কেবল অঙ্কের সংখ্যা গণনা করি যা আমাদের ভিত্তি দেয়।


2

আর, 99 89 85 বাইট

দেখো! কম 100 বাইট!
দেখো! 10 বাইট বন্ধ!
দেখো! 4 বাইট বন্ধ!

ifelse((m=max(strsplit(scan(,''),"")[[1]]))%in%(l=letters),match(m,l)+10,strtoi(m)+1)

অসমাপ্ত:

l=letters                  #R's built-in vector of lowercase letters

n=scan(what=characters())  #Takes an input from STDIN and convert it to characters

m=max(strsplit(n,"")[[1]]) #Splits the input and takes to max. 
                           #`letters` are considered > to numbers (i.e. a>1)


ifelse(m%in%l,match(m,l)+10,strtoi(m)+1) #If the max is in `letters`,
                                             #outputs the matching position of `m`in `letters` + 10 (because of [0-9]). 
                                             #Else, outputs `m` (as a number) + 1.

প্রায়শই, এই উত্তরটি ifelseফাংশনটি ব্যবহার করে:ifelse(Condition, WhatToDoIfTrue, WhatToDoElse)


আমি তোমার সংস্করণ ভালবাসি; তবে আলাদা আলাদাভাবে অক্ষর এবং সংখ্যার সাথে চিকিত্সা করা সেই সমস্যাগুলি অতিরিক্ত বাইট তৈরি করে। দয়া করে আমার সমাধানটি দেখুন যা একটি ভিন্ন পদ্ধতি ব্যবহার করে।
আন্দ্রে কোস্টায়রকা

আপনার উত্তর সত্যই আকর্ষণীয়। আমি scanকিছু পদ্ধতিতে বাইট গল্ফ করতে আপনার পদ্ধতিটি ব্যবহার করব ;)
ফ্রেডেরিক

1

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

(ডেনিস থেকে) ^^

<?=(ord(max(str_split($argv[1])))-8)%39;

ডেনিসের কৌশল ছাড়া অন্য প্রস্তাব

<?=($a=max(str_split($argv[1])))<a?$a+1:ord($a)-86;
  • আর্গুমেন্ট হিসাবে ইনপুট নেয় g আরজিভি [1];
  • সর্বোচ্চ অক্ষর (ASCII ব্যবহার করে) মান নিন
  • যদি এটি একটি নম্বর হয় (<'a' ascii মান থেকে নিকৃষ্ট) তবে আউটপুট নম্বর + 1
  • অন্য আউটপুট ascii মান-(as (ascii এ 'a এর জন্য 97,' a 'এর জন্য -11 11 তম বেসিক সংখ্যা)

এটি খুব খারাপ, পিএইচপি-তে এই জাতীয় ভার্চুজের ফাংশন নাম রয়েছে: <?=base_convert(max(str_split($argv[1])),36,10)+1এটি একটি মার্জিত সমাধান, তবে 49 বাইটে!

@ ইয়ামিনরং এর intval()পরিবর্তে আপনি ব্যবহার করতে পারেন base_convert()যার চেয়ে কম করে 38 বাইট টিও<?=intval(max(str_split($argn)),36)+1; : tio.run/##K8go@P/…
640



1

জাভা 7, 67 61 বাইট

int c(char[]i){int m=0;for(int c:i)m=m>c?m:c;return(m-8)%39;}

(m-8)%39@ ডেনিসের আশ্চর্যজনক উত্তরকে ধন্যবাদ ।

অবরুদ্ধ এবং পরীক্ষার কোড:

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

class Main{
  static int c(char[] i){
    int m = 0;
    for(int c : i){
      m = m > c
           ? m
           : c;
    }
    return (m-8) % 39;
  }

  public static void main(String[] a){
    System.out.println(c("00000".toCharArray()));
    System.out.println(c("123456".toCharArray()));
    System.out.println(c("ff".toCharArray()));
    System.out.println(c("4815162342".toCharArray()));
    System.out.println(c("42".toCharArray()));
    System.out.println(c("codegolf".toCharArray()));
    System.out.println(c("0123456789abcdefghijklmnopqrstuvwxyz".toCharArray()));
  }
}

আউটপুট:

1
7
16
9
5
25
36

2
পরিবর্তে Math.max()আপনি ব্যবহার করতে পারেনm = m>c?m:c
রবআউ

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

আপনি জাভা 8 এ স্যুইচ করলে আপনি এই পুরো ফাংশনটি ল্যাম্বডা দিয়ে প্রতিস্থাপন করতে পারেন যা একটি একক করেreduce
ব্লুরাজা - ড্যানি পিফ্লুঘুফুট

@ ব্লুরাজা-ড্যানিপ্লুঘুফুট আমি জানি, যে কারণে আমি এটি বিশেষভাবে জাভা mentioned হিসাবে উল্লেখ করেছি a একটি আলাদা উত্তর হিসাবে জাভা ৮ লম্বা পোস্ট করতে নির্দ্বিধায় অনুভব করুন।
কেভিন ক্রুইজসেন

@ ব্লুরাজা-ড্যানি ফ্লুঘুফুট আমি ভাবছি যদি এটি কম বাইট দিয়ে শেষ হয় ..
রবআউ

1

সি 89, 55 53 52 50 বাইট

f(s,b)char*s;{return*s?f(s+1,*s>b?*s:b):(b-8)%39;}

-8%39 নির্লজ্জভাবে ডেনিস থেকে চুরি

পরীক্ষা

test(const char* input)
{
    printf("%36s -> %u\n", input, f((char*)input,0));
}

main()
{
    test("00000");
    test("123456");
    test("ff");
    test("4815162342");
    test("42");
    test("codegolf");
    test("0123456789abcdefghijklmnopqrstuvwxyz");
}

আউটপুট

                               00000 -> 1
                              123456 -> 7
                                  ff -> 16
                          4815162342 -> 9
                                  42 -> 5
                            codegolf -> 25
0123456789abcdefghijklmnopqrstuvwxyz -> 36

টবি স্পিডের জন্য 2 বাইট সংরক্ষণ করা হয়েছে

কেভিন ক্রুইজসেনকে 2 বাইট সংরক্ষণ করা হয়েছে


অ-প্রোটোটাইপ ঘোষণার মাধ্যমে আপনি 2 বাইট সংরক্ষণ করতে পারেন: f(char*s,int b)হয়ে যায় f(s,b)char*s;
টবি স্পিড 14

অপ্রয়োজনীয় প্রথম বন্ধনী এবং স্থান সরিয়ে আপনি 3 বাইট সংরক্ষণ করতে পারেন:f(s,b)char*s;{return*s?f(s+1,*s>b?*s:b):(b-8)%39;}
কেভিন ক্রুইজসেন

@KevinCruijssen ধন্যবা
YSC

1

সি, 55 বাইট

এই উত্তরটি ধরে নিয়েছে যে ইনপুটটি ASCII (বা সংখ্যা এবং বর্ণগুলির সাথে সমান, যেমন আইএসও -8859 বা ইউটিএফ -8):

m;f(char*s){for(m=0;*s;++s)m=m>*s?m:*s;return(m-8)%39;}

আমরা কেবল স্ট্রিং বরাবর পুনরাবৃত্তি করি, দেখা বৃহত্তম মানটি মনে করে, তারপর বেস- base 11..36} থেকে সুপরিচিত মডুলো -৯৯ রূপান্তরটি ব্যবহার করি}

পরীক্ষা প্রোগ্রাম

int printf(char*,...);
int main(int c,char **v){while(*++v)printf("%s -> ",*v),printf("%d\n",f(*v));}

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

00000 -> 1
123456 -> 7
ff -> 16
4815162342 -> 9
42 -> 5
codegolf -> 25
0123456789abcdefghijklmnopqrstuvwxyz -> 36

আপনি কি এম = 0 সরাতে পারবেন না? মিটার যদি ফাইলের শীর্ষ স্তরে উপস্থিত হয় তবে এর বাহ্যিক যা স্থির বোঝায় এটি সূচিত করে শূন্যে।
ব্যাটম্যান

@ ব্যাটম্যান - হ্যাঁ, তবে কেবল যদি আপনি f()একাধিকবার কল না করেন । আমি জানি যে গল্ফের প্রায় কোনও কিছুর সুষ্ঠু খেলা, তবে আমার পেশাদার প্রবৃত্তি এটিকে খুব ভঙ্গুর হিসাবে বিবেচনা করে!
টবি স্পিড

আরও চিন্তাভাবনা করে, আমি mকলগুলির মধ্যে পুনরায় সেট করার জন্য এটি একটি বাহ্যিক প্রয়োজন করতে পারি f()। তারপরে আমার পরীক্ষার প্রোগ্রামটি এখনও কাজ করতে পারে।
টবি স্পিড

@ ব্যাটম্যান: কোড গল্ফ মেটাতে , " ফাংশন সাবমিশনগুলি কি পুনরায় ব্যবহারযোগ্য হতে হবে? " এই প্রশ্নে সংখ্যাগরিষ্ঠ মতামত একক-ব্যবহারের ক্রিয়াকলাপের অনুমতি দেওয়ার বিরুদ্ধে বলে মনে হয়। সুতরাং আমি আমার যা আছে তা আঁকড়ে রাখব। পরামর্শ যাইহোক, ধন্যবাদ।
টবি স্পিড 8

1

গণিত, 34 32 বাইট

মার্টিন ইন্ডারকে 2 বাইট সংরক্ষণ করা হয়েছে thanks

Max@Mod[ToCharacterCode@#-8,39]&

আমি সিদ্ধান্ত নিয়েছি যে ভিন্ন পদ্ধতিটি একটি নতুন উত্তর প্রাপ্য।

ডেনিসের সমাধান দ্বারা অনুপ্রাণিত পদ্ধতি চুরি


2
কিছু উপসর্গ চিহ্ন স্বরূপ ব্যবহার করুন: Max@Mod[ToCharacterCode@#-8,39]&(আপনার অন্যান্য উত্তরের জন্যও এটি যায়)
মার্টিন এন্ডার

2
এছাড়াও, আপনাকে &একটি বেনামি ফাংশন নির্দেশ করতে শেষ পর্যন্ত যুক্ত করতে হবে।
LegionMammal978

আপনি @নিজের উত্তর ( ToCharacterCode@#এবং Characters@#) উভয়টিতে একটি ভুলে গেছেন ।
মার্টিন ইন্ডার

1

গণিত, 34 32 বাইট

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

Max@BaseForm[Characters@#,36]+1&

একটি খাঁটি ফাংশন সংজ্ঞায়িত করে যা স্ট্রিংটিকে ইনপুট হিসাবে গ্রহণ করে।

ইনপুটটিকে অক্ষরগুলিতে বিভক্ত করে, তাদের 36 টি বেসে রূপান্তর করে এবং সর্বোচ্চ +1 প্রদান করে।


Max@BaseForm[Characters@#,36]+1&
আলেফাল্ফ

1

সি # রিপল, 17 বাইট

x=>(x.Max()-8)%39

ডেনিসের উত্তর সি # তে সবেমাত্র পোর্ট করেছেন।


1

সিজেম, 10 বাইট

আমাকে কয়েকটা বাইট সংরক্ষণের জন্য মার্টিন ইন্ডারকে ধন্যবাদ!

ডেনিসের সূত্র ব্যবহার করে

q:e>8-i39%

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

সিজেম, 18 16 বিটিএস

বিকল্প সমাধান:

A,s'{,97>+q:e>#)

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

A,s'{,97>+       e# Push the string "0123456789abcdefghijklmnopqrstuvwxyz"
          q      e# Get the input
           :e>   e# Find the highest character in the input
              #  e# Find the index of that character in the string
               ) e# Increment

1

স্কালা, 25 বাইট

print((args(0).max-8)%39)

এটি চালান:

$ scala whatbase.scala 0123456789abcdefghijklmnopqrstuvwxyz


1

আর, 62 54 বাইট

max(match(strsplit(scan(,''),"")[[1]],c(0:9,letters)))

Ungolfed:

max(
  match( # 2: Finds the respective positions of these characters
    strsplit(scan(,''),"")[[1]], # 1: Breaks the input into characters
                                c(0:9,letters)) # 3: In the vector "0123...yz"
                                                )

আপডেট: na.rm=Tইনপুট বৈধতার অনুমানের অধীনে অপ্রয়োজনীয় কারণে 8 বাইট বন্ধ করে দেওয়া হয়েছে ।

ফ্রেডরিকের উত্তরের তুলনায় আকারে 39% উন্নতি । তদ্ব্যতীত, এটি একটি সামান্য বিট দ্রুত সঞ্চালিত হয়: প্রতিযোগী উত্তরের জন্য ০.০৯ সেকেন্ড বনাম ১০০,০০০ প্রতিলিপিগুলির জন্য ০.৮86 সেকেন্ড। সুতরাং আমার একটি ছোট এবং আরও দক্ষ উভয়।



0

বেস 70

grep -o .|sort -r|head -c1|od -An -tuC|sed s/$/-86/|bc|sed s/-/39-/|bc

ইনপুট বর্ণগুলি ছোট হাতের হয় are


0

জাভাস্ক্রিপ্ট, 57 50 48 বাইট

K বাইট @ কমারসো n7 তে থ্যাঙ্কস সংরক্ষণ করেছে ২ বাইট @ নীলকে ধন্যবাদ জানায়

n=>Math.max(...[...n].map(a=>parseInt(a,36))+1)

আসল উত্তর:

n=>n.split``.map(a=>parseInt(a,36)).sort((a,b)=>b-a)[0]+1

এর সাথে আপনি 7 বাইট ছুঁড়ে ফেলতে পারেন n=>Math.max(...n.split``.map(a=>parseInt(a,36)+1))
kamoroso94

@ kamoroso94 আমি বুঝতে পারি নি যে Math.maxঅস্তিত্ব আছে। এটা সম্পর্কে বলার জন্য ধন্যবাদ!
ড্যানইম্যান

[...s]তুলনায় খাটো s.split``
নীল

0

পার্ল, 30 27 বাইট

এর জন্য +1 অন্তর্ভুক্ত -p

STDIN এ ইনপুট দিয়ে চালান, যেমন

base.pl <<< codegolf

base.pl:

#!/usr/bin/perl -p
\@F[unpack"W*"];$_=@F%39-9

0

লাইভস্ক্রিপ্ট, 32 বাইট

->1+parseInt (it/'')sort!pop!,36

আমার প্রিয় ভাষায় এই উত্তরের একটি বন্দর যা জাভাস্ক্রিপ্টে সংকলন করে। base~numberঅপারেটর যদি ভেরিয়েবলগুলির সাথে কাজ করে থাকে তবে আমি ->1+36~(it/'')sort!pop!(23 বাইট) লিখতে পারি , তবে এটি ফাংশন বাইন্ড অপারেটরের সাথে সাংঘর্ষিক: /

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