বর্ণমালা থেকে বর্ণমালা এবং বর্ণমালা থেকে সংখ্যা


26

চ্যালেঞ্জ

এই চ্যালেঞ্জে আপনাকে বর্ণমালার সংশ্লিষ্ট বর্ণটিকে ইনপুট হিসাবে আউটপুট হিসাবে আউটপুট হিসাবে নিতে হবে এবং তার বিপরীতে। (1 <=> এ, 2 <=> খ) ইত্যাদি

1 -> A
2 -> B
...
26 -> Z

A -> 1
B -> 2
...
Z -> 26

বিধি

  • এটি , তাই বাইট জেতে সংক্ষিপ্ততম কোড।
  • ইনপুট শুধুমাত্র পারেন থেকে একটি বড় হাতের অক্ষর নিয়ে গঠিত হবে Aথেকে Zবা থেকে একটি পূর্ণসংখ্যা 1থেকে 26সমেত।
  • ট্রেলিং হোয়াইটস্পেস (স্পেস এবং নিউলাইন) অনুমোদিত।

1
নকল কেন? ওও সমান নয়।
চাদ

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

1
আমরা 26একটি পূর্ণসংখ্যা "26"হিসাবে বা একটি স্ট্রিং হিসাবে পাবেন , বা উভয় অনুমোদিত?
লিকি নুন

2
এটি কি বড় হাতের হতে হবে, না এর পরিবর্তে লোয়ারকেস গ্রহণযোগ্য?
মেগো

1
সিরিয়াসলি, অন্য বর্ণমালা চ্যালেঞ্জ? (
͡

উত্তর:


6

আসলে, 7 বাইট

ú' +ûEí

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

ব্যাখ্যা:

ú' +ûEí
ú' +     lowercase English alphabet, prepend space
    û    uppercase
     E   element (pushes the nth letter if input is an integer, leaves stack alone otherwise)
      í  index (pushes index of input if input is a string, leaves stack alone otherwise)

ছোট হাতেরটি গ্রহণযোগ্য হলে এটি 6 বাইট:

ú' +Eí

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


1
আপনি এই মুহুর্তে জিতে যাচ্ছেন, আমি মনে করি কেউ কেউ 7 বাইটের কম প্রোগ্রাম করতে পারে না।
চাদ

1
আমি শুধু এটি জিজ্ঞাসা করতে যোগদান। @ মেগো এই কোন ভাষা?
ভাঁজযুক্ত ক্রোমাটিন

2
@ ফোল্ডেড ক্রোম্যাটিনটি দেখতে গিথুব
আলফ্রেড বেজ

1
@ ফোল্ডেড ক্রোমাটিন আসলে, এটি Actually। অত: পর Actually, 7 bytes। : পি
ড্যান

2
এর মতো মুহুর্তগুলি আমার ভাষার জন্য আমি যে নামগুলি বেছে নিয়েছি সে সম্পর্কে আমাকে আনন্দিত করে :)
মেগো

12

খাঁটি বাশ, 51

উত্তরগুলির বেশিরভাগ অংশ একরকম শর্তযুক্ত ব্যবহার করে। এটি পুরোপুরি শর্তসাপেক্ষে সরবরাহ করে এবং পরিবর্তে ইনপুটটিকে বেস-36 number নম্বর হিসাবে গণ্য করে যা যথাযথভাবে নির্মিত বাশ-ব্রেস-এক্সপেনশন অ্যারেতে সূচকগুলি:

a=(_ {A..I} {1..26} {J..Z} {A..Z})
echo ${a[36#$1]}

Ideone।


1
তাহলে কি করে #?
আর কাপ,




7

পাইথন 3, 43 বাইট

lambda x:x!=str(x)and chr(64|x)or ord(x)^64

এই সমাধানটি সম্পর্কে আকর্ষণীয় বিষয়টি হ'ল এটি OR, বিটওয়াইস ওআর |, লজিক্যাল ওআর or, বিটওয়াইজ এক্সওআর ^এবং লজিক্যাল এক্সওর এর সমস্ত ইন্দ্রিয়কে অন্তর্ভুক্ত করে !=...


6

2sable , 9 8 বাইট

কোড:

.bAu¹kr,

ব্যাখ্যা:

.b        # Convert 1 -> A, 2 -> B, etc.
  A       # Push the alphabet.
   u      # Convert it to uppercase.
    ¹k    # Find the index of the letter in the alphabet.
      r   # Reverse the stack.
       ,  # Pop and print with a newline.

সিপি -1222 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!


1
আপনি মুছতে পারবেন না,? কোন বাইট ছাড়া হয়? আপনার নতুন লাইন প্রিন্ট করার দরকার নেই।
চাদ

@ চ্যাড নোপ, এটি সংখ্যার ইনপুটগুলির জন্য কাজ করবে না :(
আদনান

6

রুবি, 47 39 + nপতাকা = 40 বাইট 33 34 31 বাইট

বেনামে ফাংশন। @ কার্লনেপফের পাইথন সমাধানের মতো একটি ব্যতিক্রম হ্যান্ডলিং ট্রিক ব্যবহার করে ।

@Manatwork থেকে -3 বাইট

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

->i{(64+i).chr rescue i.ord-64}

n40 টি বাইটের জন্য পতাকা সহ মূল পুরো প্রোগ্রাম সংস্করণ এবং এসটিডিআইএন থেকে পড়ে:

puts$_!~/\d/?$_.ord-64:(64+$_.to_i).chr

আইডিয়োন চালানোর চেষ্টা করার সময় আমি সিনট্যাক্স ত্রুটি পেয়েছি , আপনি কীভাবে পরীক্ষা করতে পারেন তা বলতে পারেন?
লাইব্রুগ

@ লাইব্রোগ উফ! এটি এখনই ঠিক করা হয়েছে
মান কালি

আপনি নির্লজ্জভাবে প্রয়োগের দ্বারা আরো কমে যায় কার্ল Napf তার 's কৌতুক পাইথন সমাধান : ->i{(64+i).chr rescue i.ord-64}
manatwork

5

চেডার, 34 32 বাইট

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

n->"%s"%n==n?n.ord()-64:@"(n+64)

আমি চাই যে স্ট্রিং বা সংখ্যা কিনা তা পরীক্ষা করার আরও ছোট উপায় ছিল।

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

ব্যাখ্যা

n ->                // func with arg `n`
    "%s"%n==n ?     // if n is string... (see below)
       n.ord() - 64  // return code point - 64
    :               // else...
    @"(n+64)         // chr(n+64)

"%s"%n==nএটি একটি সহজ উপায়ে স্ট্রিং কিনা তা পরীক্ষা করে। "%s"একটি স্ট্রিং ফর্ম্যাট, আমি %উদাহরণস্বরূপ "a %s c" % "b"সমান হয় সঙ্গে বিন্যাস করতে পারেন "a b c"%sএটি একটি স্ট্রিং নির্দিষ্ট করে, যদি কোনও অঙ্ক পাস হয়ে যায় তবে এটিই থাকবে %s


"%s"%n==n2 বাইট সংরক্ষণ করুন
লিকি নুন

@ লিকিউন ওহ যে স্মার্ট! আমি চেষ্টা করার চেষ্টা করছিলাম "%d"%n==nকিন্তু তা কাজ করছিল না: /
ডাউনগোট

5

গণিত 54 54 বাইট

লেজিওনম্যামাল ৯78৮ এর একদম চতুর পরামর্শ সহ যা 13 বাইট সাশ্রয় করে।

If[#>0,FromLetterNumber,,LetterNumber]@#&

If[#>0,FromLetterNumber,,LetterNumber]প্রয়োগ করতে হবে FromLetterNumberবা ইনপুটটিতে সিদ্ধান্ত নেওয়ার একমাত্র উদ্দেশ্য পরিবেশন করে LetterNumber

#>0ইনপুট,, #এমন একটি সংখ্যা, যা ক্ষেত্রে FromLetterNumberনির্বাচিত হবে তা সন্তুষ্ট হবে।

তবে #>0কোনও #চিঠি হলে সত্য বা মিথ্যা LetterNumberহবে না এবং পরিবর্তে নির্বাচিত হবে।


If[#>0,FromLetterNumber,,LetterNumber]@#&["d"]

4


If[#>0,FromLetterNumber,,LetterNumber]@#&[4]


গাণিতিকায় FromLetterNumberএবং LetterNumberঅন্যান্য বর্ণমালাগুলির সাথেও কাজ করবে। এর জন্য আরও কয়েকটি বাইট প্রয়োজন।

If[# > 0, FromLetterNumber, , LetterNumber][#, #2] &[4, "Greek"]
If[# > 0, FromLetterNumber, , LetterNumber][#, #2] &[4, "Russian"]
If[# > 0, FromLetterNumber, , LetterNumber][#, #2] &[4, "Romanian"]

δ
г

If[# > 0, FromLetterNumber, , LetterNumber][#, #2] &[δ, "Greek"]
If[# > 0, FromLetterNumber, , LetterNumber][#, #2] &[г, "Russian"]
If[# > 0, FromLetterNumber, , LetterNumber][#, #2] &[b, "Romanian"]

4
4
4


1
কিছু গল্ফিং, এটিকে 41 বাইটে If[#>0,FromLetterNumber,,LetterNumber]@#&
এনেছে

আমি আপনার পরামর্শের হিসাবে ব্যাখ্যা: If[#>0,FromLetterNumber[#],LetterNumber@#]‌&। যদিও If[#>0,FromLetterNumber[#],LetterNumber@#]‌&[4]কাজ If[#>0,FromLetterNumber[#],LetterNumber@#]‌&["c"]করে না। এটি দৃশ্যত সমাধান করতে পারে না "c">0। আমি কি ভুল বুঝেছিলাম?
ডেভিডসি

দ্বিগুণ ,,ইচ্ছাকৃত, এবং বহির্মুখীও @#; এটি এরূপ হিসাবে মূল্যায়ন করে If[# > 0, FromLetterNumber, Null, LetterNumber][#]&যা 4-আর্গুমেন্ট ফর্মটি If(এটি দেখুন) ব্যবহার করে।
LegionMammal978

আশ্চর্যজনক কীভাবে 4-যুক্তি রূপটি Ifকাজ করে।
ডেভিডসি

4

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

f s|s<"A"=[['@'..]!!read s]|1<2=show$fromEnum(s!!0)-64

ব্যবহারের উদাহরণ: map f ["1","26","A","Z"]-> ["A","Z","1","26"]

হাস্কেলের কঠোর প্রকারের সিস্টেমটি এখানে আসল ব্যথা। অতিরিক্ত হিসাবে সমস্ত সংক্ষিপ্ত চর <-> ইন্ট ফাংশনগুলির মতো chrএবং ordএকটি আমদানি প্রয়োজন, তাই আমাকে এটি হাতে হাতে করতে হবে। চিঠির জন্য -> ইনট কেস, উদাহরণস্বরূপ আমাকে String-> Char(মাধ্যমে !!0) -> Integer(মাধ্যমে fromEnum) -> String(মাধ্যমে show) রূপান্তর করতে হবে ।


4

সি, 55 বাইট

i;f(char*s){i=atol(s);printf(i?"%c":"%d",64^(i?i:*s));}

4

পার্ল 6 , 25 বাইট

{+$_??chr $_+64!!.ord-64}

ব্যাখ্যা:

# bare block lambda with implicit parameter of 「$_」
{
    +$_         # is the input numeric
  ??
    chr $_ + 64 # if it is add 64 and get the character
  !!
    $_.ord - 64 # otherwise get the ordinal and subtract 64
}

উদাহরণ:

say ('A'..'Z').map: {+$_??chr $_+64!!.ord-64}
# (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26)

say (1..26).map: {+$_??chr $_+64!!.ord-64}
# (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)

2
যদিও সিনট্যাক্স তাই ভিন্ন, যে একই প্রক্রিয়া পার্ল 5 বাইট একই সংখ্যক হল: perl -pe '$_=/\d/?chr$_+64:-64+ord'!
ডম হেস্টিংস

3

সি #, 32 বাইট

n=>(n^=64)>26?(object)(char)n:n;

কাস্ট Func<int, object>

ইনপুট: charজড়িতভাবে রূপান্তরিত হয় intতাই int(1-26) বা char('A'-Z') দিয়ে ডাকে ।

আউটপুট: হয় এক charবা int


3

পিএইচপি, 49 41 40 বাইট

<?=+($i=$argv[1])?chr($i+64):ord($i)-64;

আমি মনে করি না is_numericডান একটি ভাল বিকল্প আছে ?

এটি কমান্ড লাইন থেকে কার্যকর করা হয় ( $argv[1]প্রদত্ত প্রথম পরিবর্তনশীল)

ধন্যবাদ:

@ অন্তর্ভুক্তকারীর নাম: গল্ফড 8 বাইট is_numeric($i=$argv[1])সঙ্গে প্রতিস্থাপন 0<($i=$argv[1]).এটি কারণ কাজ করে (int)"randomLetter" == 0

@ মান্যাটওয়ার্ক: 1 বাইট দিয়ে হ্রাস পেয়েছে। 0<সঙ্গে প্রতিস্থাপন +। এই ক্ষেত্রে যা ঘটে তা হ'ল + সিগন্যাল "জেড" (বা যে কোনও চিঠিই) একটি ০. তে নিক্ষেপ করবে এটি ফলস্বরূপ মিথ্যা হবে। এর জন্য কোনও চিঠি সর্বদা মিথ্যা এবং একটি সংখ্যা সর্বদা সত্য।


2
0<($i=$argv[1])পরিবর্তে ব্যবহার করা is_numeric($i=$argv[1])আপনার 8 টি বাইট সংরক্ষণ করে ।
সন্নিবেশকারী নাম

1
এই ধারণা অব্যাহত: 0<+
manatwork

2

পাইথন 2, 61 বাইট

i=raw_input()
try:o=chr(int(i)+64)
except:o=ord(i)-64
print o

হ্যাঁ আমি পাইথন 3 এ স্যুইচ করতে পারি input


input()তবুও ব্যবহার করুন এবং এতে পরিবর্তন int(i)করুন i
লিকি নুন

তারপরে চরিত্রের ইনপুটগুলি কাজ করে না।
কার্ল ন্যাপফ

2
ইনপুট হিসাবে নিন"A"
লিকি নুন

3
এটি অহেতুক. Aঅথবা কিছুই না.
কার্ল ন্যাপফ

এটিকে ফাংশন হিসাবে সংশোধন করে আপনি কয়েকটি বাইট ছোঁড়াতে পারেন: লাইন 1:, def f(i):লাইন 2: <স্পেস> try:o=chr(i+64), লাইন 3 <স্পেস> অন্যথায় অপরিবর্তিত, লাইন 4: <স্পেস> return o সেই ফর্মটিতে এটি পাইথন 2 এর মধ্যে কাজ করবে বা পাইথন 3
সিডলেন

2

পাওয়ারশেল ভি 2+, 42 বাইট

param($n)([char](64+$n),(+$n-64))[$n-ge65]

ইনপুট নেয় $n(পূর্ণসংখ্যা বা স্পষ্ট চর হিসাবে) এবং অ্যারের দুটি উপাদানগুলির মধ্যে চয়ন করতে সিউডো-টের্নারি ব্যবহার করে। শর্তসাপেক্ষ $n-ge65(যেমন, ইনপুট ASCII Aবা তার চেয়ে বড়)। যদি তা হয় তবে আমরা কেবল ইনপুটটিকে একটি আন্ত এবং বিয়োগ হিসাবে কাস্ট করি 64। অন্যথায়, আমরা 64ইনপুট পূর্ণসংখ্যায় যুক্ত করি এবং এটি হিসাবে কাস্ট করি [char]। উভয় ক্ষেত্রেই, ফলাফলটি পাইপলাইনে রেখে যায় এবং মুদ্রণ জড়িত।

উদাহরণ

PS C:\Tools\Scripts\golfing> ([char[]](65..90)|%{.\alphabet-to-number.ps1 $_})-join','
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26

PS C:\Tools\Scripts\golfing> (1..26|%{.\alphabet-to-number.ps1 $_})-join','
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z

2

বেফুঞ্জ -98 *, 19 বাইট

&:39*\`'@\j;+,@;-.@

কারণ প্রশ্নটি বলেছে যে আপনি একটি 1-26বা একটি পেয়েছেন A-Zআমি ধরে নিয়েছি এর অর্থ 26 সংখ্যা বা AZ অক্ষর। Alt-কোড লিখে, তাই এটি ব্যবহার করা অনেক সহজ বেশিরভাগ ব্যাখ্যা সংগ্রাম &এবং উল্টোদিকে 26 বা 90 'জেড' জন্য 26 মত মান লিখুন ~

ছদ্ম-কোড

int c = get stdin
push the value of 27
bool is_number =  27 > c
push the value of `@` (64)
if is_number == 1
   jump to adding 64 to c //putting it the ASCII range
   print as ASCII
   end
else
   jump to subtracting 64 from c //putting it in the numerical range
   print as number
   end

এটি পরীক্ষা করুন (উইন্ডোজে) এখানে!

* এটি প্রযুক্তিগতভাবে ইউনেফুঞ্জ -৯৮ কারণ এটি কেবলমাত্র ১ টি মাত্রা ব্যবহার করে তবে এই নামটি অপরিচিত হতে পারে।


2

বেফঞ্জ 93 , 144 90 66 54 36 19 বাইট

এটি অনুমোদিত কিনা 100% নিশ্চিত নয় তবে আপনাকে যদি 65 কে বি, 66 হিসাবে বি ইত্যাদি টাইপ করার অনুমতি দেওয়া হয় তবে ([আমার] সুবিধার জন্য):

&:"@"`"@"\#. #-_+,@

অন্যথায়, 36 বাইটে:

~:0\"A"-`#v_88*-.@
**~28*++,@>68*-52

(পরামর্শের জন্য tngreene ধন্যবাদ!)

~:0\567+*-`#v_88*-.>$28*+,@
52**\28*++,@>~:0`!#^_\68*-

(পুনঃব্যবস্থাপনের মাধ্যমে 12 বাইট সংরক্ষণের জন্য Sp3000 ধন্যবাদ!)

~:0\567+*-`#v_88*-.>$82*+,@
            >~:0`!#^_\68*-52**\28*++,@


v                   >$28*+,@
             >~:0`!#^_\68*-52**\28*++,@
>~:0\567+*-`#^_88*-.@


v                    >$28*+,@
~           >11g~:0`!|
1                    >\68*-52**\28*++,@
1
p           
>011g567+*-`|
            >11g88*-.@

Ungolfed:

v                       >$ 28* + , @
                 >~:0 `!|
                        >\ 68* - 52* * \ 28* + + , @
>~:0\ 5 67+ * - `|
                 >88* - . @

এটি আমার প্রথম কাজ করা বেফুঞ্জ প্রোগ্রাম, এবং আমি আরও গল্ফ করার প্রয়োজন অনুভব করছি। কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে।

আপনি Befunge কোড পরীক্ষা করতে পারেন এখানে


1
তাত্ক্ষণিকভাবে এক নজরে মন্তব্য: বেফঞ্জ চারদিকে মোড় নেয়, সুতরাং আপনি দ্বিতীয় লাইনের শেষ 12 টি অক্ষর সামনের দিকে নিয়ে যেতে পারেন52**\28*++,@>~:0`!#^_\68*-
Sp3000

@ Sp3000, ওহ আমি তা লক্ষ্য করি নি। ধন্যবাদ!
ড্যানিয়েল

আপনার প্রথম প্রোগ্রামে অভিনন্দন! একটি বিষয় বিবেচনা করতে হবে হ'ল স্ট্রিংয়ের মধ্যে ASCII মানগুলি চাপিয়ে বিপুল সংখ্যক উত্পাদন করা। তুলনা 567+*করার জন্য "A"। এছাড়াও, কোনও মান বারবার তৈরি করার পরিবর্তে কোনও মান পুনরায় ব্যবহার করার বিষয়ে gএবং pনির্দেশাবলী ভুলে যাবেন না । এছাড়াও, আমি কোনও ইনপুট পাইনি যা আইপিটিকে শাখায় নিয়ে যাবে >$ 28* + , @। এটা কিসের জন্য? আপনি কি নিশ্চিত যে এর প্রয়োজনীয়তা আছে?
tngreene

শেষ অবধি, "26" বা "08" পার্স করার জন্য আমি আপনার উত্সর্গকে প্রশংসা করি। আপনার পদ্ধতিটি, যেমনটি আমি এটি পড়ছি, তেমন প্রতীক <-> সংখ্যার রূপান্তর গণিতের সাথে জড়িত রয়েছে ('2' থেকে '2' তে '2')। আপনার তুলনা শুরু করার আগে আপনার প্রথম এবং দ্বিতীয় ইনপুটগুলি সংখ্যা হিসাবে দেখানো আপনার এএসসিআইআই-গাণিতিকের পরিমাণ হ্রাস করতে পারে। বিকল্পভাবে, সম্ভবত ইনপুটগুলির সাথে প্রতীক হিসাবে দক্ষতার সাথে ডিল করার একটি উপায় রয়েছে ('2' এর মতো '2'), সংখ্যায় কোনও রূপান্তর প্রয়োজন নেই!
tngreene

@ টিংগ্রেইন, পূর্ণসংখ্যা ইনপুট <10 শাখায় যায় $28*+,@তবে সেগুলি> = 10 অন্যটিতে যায় । এটি চূড়ান্তভাবে করা হয়েছিল কারণ আপনি যতক্ষণ জানি আমার ইনপুট একাধিকবার পড়তে পারে না।
ড্যানিয়েল

2

Brainfuck, 445 অক্ষর

গল্ফযুক্ত কোডের চেয়ে ধারণার প্রমাণ। সাইন ইন, মোড়কবিহীন ব্রেনফাকের প্রয়োজন Requ

,[>+>+<<-]>[<+>-]>>++[->++++++<]>[-<<<+++++>>>]<<<<[->-<]>[,<++++[->------------<]++++[->>------------<<][-<<++++++++++>>]>[-<+>]>[-<<++++++++++>>]>++[->++++++<]>+[-<+++++>]<-[-<<<+>>>]<<<.>]>[[-<+<+>>]>++[->++++++<]>+[-<+++++>]<-[-<<->>]<<[->+>+<<]>>>++++++++++<+[>[->+>+<<]>[-<<-[>]>>>[<[-<->]<[>]>>[[-]>>+<]>-<]<<]>>>+<<[-<<+>>]<<<]>>>>>[-<<<<<+>>>>>]<<<<<-[->+>+<<]>[-<++++++++++>]<[-<->]++++[-<++++++++++++>]++++[->>++++++++++++<<]>>.<<<.>]

মন্তব্য সহ

,[>+>+<<-] Firstly Duplicate it across two buffers
>[<+>-] Move the second buffer back to the first buffer
>>++[->++++++<]>[-<<<+++++>>>] Establish 60 in the second buffer
<<<<
Compare Buffers 1 and 2
[->-<]
>
[ If there's still data in buffer 2
, Write the value in the units column to buffer two
<
++++
[->------------<] Subtract 12 from the units buffer
++++
[->>------------<<] Subtract 12 from the tens buffer
[-<<++++++++++>>] Multiply buffer three by ten into buffer 1
>
[-<+>] Add the units
>
[-<<++++++++++>>] Add the tens
>++ Add 65 to the buffer
[->++++++<]>+
[-<+++++>]
<- Actually we need 64 because A is 1
[-<<<+>>>] Add 64 to the first buffer
<<<
. Print the new letter
> Move to blank buffer
]
>
[ Otherwise we're a letter
[-<+<+>>] Copy it back over the first two buffers
>++ Write 64 to the buffer
[->++++++<]>+
[-<+++++>]
<-
[-<<->>] Subtract 64 from the letter
<<[->+>+<<]
>>>++++++++++< Copy pasted Division step x = current buffer y = 10 rest of the buffers are conveniently blank

+
[>[->+>+<<]>[-<<-[>]>>>[<[-<->]<[>]>>[[-]>>+<]>-<]<<]>>>+<<[-<<+>>]<<<]>>>>>[-<<<<<+>>>>>]<<<<<
-
[->+>+<<]
>[-<++++++++++>]
<[-<->]
++++
[-<++++++++++++>]
++++
[->>++++++++++++<<]
>>.<<<.>
] 

2

জাভা, 104 98 97 83 54 53 51 50 30 বাইট

x->(x^=64)>64?(char)x+"":x+"";

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

IntFunction<String> f = x -> (x ^= 64) > 64 ? (char) x + "" : x + "";
out.println(f.apply('A')); // 1
out.println(f.apply('Z')); // 26
out.println((f.apply(1))); // A
out.println((f.apply(26))); //Z

1
আপনি এরকম একটি return(s.matches("\\d+")?(char)(Integer.parseInt(s)+64)+"":(s.charAt(0)-64)+"");
টের্নারি

আপনি পাশাপাশি কাস্টিং অপসারণ করতে পারেন, যা আপনাকে 7 বাইট কমিয়ে আনতে দেয়।
ব্যবহারকারী 902383

প্রোগ্রামটি কোনও ইনপুট নেয় না। প্রোগ্রামটি কোনও আউটপুট দেয় না। এমনকি কোন প্রোগ্রাম নেই!
নিকোলাস বারবুলেসকো

@ নিকোলাস বার্বুলেসকো অন্যথায় না বর্ণিত আপনি একটি সম্পূর্ণ প্রোগ্রাম লেখার প্রয়োজন নেই।
শান ওয়াইল্ড


1

আর, 73 বাইট

f=function(x){L=LETTERS;if(is.numeric(x)){i=L[(x)]}else{i=which(L==x)};i}

কোন প্রয়োজন নেই f=, এবং আপনি মেঘ ifelseকিছু ফাংশন গল্ফ আউট ব্যবহার করতে ফাংশন ব্যবহার করার চেষ্টা করুন !
ফ্রিডেরিক


1

পাইথন 3, 49 48 53 50 বাইট

কোনওভাবেই আমি বাইট কাউন্টটি ভুল পেয়েছি; _; ধন্যবাদ dahuglenny

isalpha এর চেয়ে কম isnumeric

lambda x:x.isalpha()and ord(x)-64or chr(int(x)+64)

স্ট্রিং হিসাবে ইনপুট নেয়, যা কোনও চিঠি বা সংখ্যা হতে পারে


1
আপনি একটি বাইটের মধ্যবর্তী স্থান x.isnumeric()এবং elseসংরক্ষণ করতে পারবেন।
অ্যাক্রোলিথ

1

জাভা, 61 বাইট

int f(char c){return c^64;}char f(int i){return(char)(i^64);}

Ungolf'd:

int f(char c) {
    return c^64;
}

char f(int i) {
    return (char) (i^64);
}

কল করা f('A')প্রথম ফাংশনটি আহ্বান করে, একটি int1 পুনরায় সংযুক্ত করে; কলিং f(1)দ্বিতীয় ক্রিয়াকলাপ ডেকে আনে, char"এ" ফিরিয়ে দেয় ।


`আপনাকে ইনপুট হিসাবে একটি সংখ্যা নিতে হবে এবং বর্ণমালার সংশ্লিষ্ট বর্ণটি আউটপুট দিতে হবে এবং তদ্বিপরীত। (1 <=> এ, ২ <=> বি) ইত্যাদি `আমি মনে করি না যে ফাংশনগুলির একটি সেট এর জন্য যোগ্যতা অর্জন করে।
শন ওয়াইল্ড

1
@ সানবিয়ান এটি একটি ফাংশন ওভারলোড
NoOneIsHere

1
এটি কোনও ইনপুট নেয় না। এটি কোনও আউটপুট দেয় না। কোন প্রোগ্রাম নেই!
নিকোলাস বারবুলেসকো

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

1

জাভাস্ক্রিপ্ট 86 77 66 60 বাইট

i=>typeof i<'s'?String.fromCharCode(i+64):i.charCodeAt(0)-64
  • তীর ফাংশন ব্যবহার সম্পর্কে মন্তব্য পরে 7 বাইট সংরক্ষণ করা
  • @ মানাটওয়ার্কের দ্বারা উল্লিখিত হিসাবে রিটার্ন / বন্ধনীগুলি সরিয়ে অন্য 11 বাইট সংরক্ষণ করা হয়েছে
  • @ মান্যাটওয়ার্কের জন্য আরও 6 টি বাইট সংরক্ষণ করেছে

1
তীর ফাংশনগুলি ব্যবহার করুন
বাল্ড বান্থা

@ বাল্ডবাঁথা চিয়ার্স করেছেন, এটিকে পরিবর্তন করেছেন :-)
ডিলান মিউস

কোন দরকার returnবিবৃতি: i=>typeof i=='number'?String.fromCharCode(i+64):i.charCodeAt(0)-64
manatwork

@ মান্যাটওয়ার্ক চিয়ার্স!
ডিলান মিউস

1
টাস্কের বর্ণনা অনুসারে typeofইনপুটটি কেবল "সংখ্যা" বা "স্ট্রিং" হতে পারে। সুতরাং চেক করার প্রয়োজন নেই =='number', <'s'এটিও করবে।
manatwork

1

এএসএম: 10 বাইট

3C 40 77 04 2C 40 EB 02 04 40

ব্যাখ্যা: এটি এমন কোনও প্রোগ্রামের একত্রিত উপস্থাপনা যা জিজ্ঞাসিত হয় ঠিক তা করে। এটি পুরোপুরি কার্যকরী নয়, কারণ এর জন্য কিছু নির্দেশিকা দরকার, তবে এটি যদি কোনও সমাবেশ প্রোগ্রামের কোড বিভাগে যুক্ত করা হয় তবে এটি কাজ করা উচিত। এটি AL রেজিস্টারে ইনপুট গ্রহণ করে এবং যদি এর কোনও চিঠি থাকে তবে এটি ASCII কোড মান থেকে 40 ঘন্টা বিয়োগ করে, কেবল সংখ্যাটি (যেমন বি = 42h, 42h-40h = 2h) রেখে যায়। ইনপুটটি যদি একটি নম্বর হয় তবে এটি 40 ঘন্টা যোগ করে বিপরীত পদ্ধতিটি করে। এটি আ’লীগ রেজিষ্টারে ফলাফল রেখে দেয়। নীচে সমাবেশ উত্স কোড দেওয়া আছে

cmp al,40h
ja letter_to_number
sub al,40h
jmp continue
letter_to_number: add ax,40h
continue:

এছাড়াও, আপনি যদি অন্য সমস্ত উত্তর মেশিন কোডে রূপান্তর করেন তবে আমি ইতিবাচক যে আমারটি সবচেয়ে ছোট হবে।


আমি মনে করি কয়েকটি সমস্যা আছে: 77 02 2Cহওয়া উচিত 77 **04** 2C; subএবং addপিছন হয়।
সিলিংক্যাট

আমি উপরের সংশোধনগুলি প্রয়োগ করেছি এবং একটি "ফাংশন" তৈরি করেছি যা আপনি একটি সি প্রোগ্রাম থেকে x86_64 মেশিনে কল করতে পারেন। #define F(x) ((int(*)(int))"\x89\xf8\x3c\x40\x76\4\x2c\x40\xeb\2\4\x40\xc3")(x)
সিলিংক্যাট

এটি কী ধরণের সমাবেশ?
mbomb007

টার্বো
এসেম্ব্লার



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