কাস্টম বর্ণমালা মুদ্রণ করুন


20

চ্যালেঞ্জ

কনসোল ইনপুট থেকে পড়া কোনও বর্ণ থেকে বর্ণমালা প্রদর্শন করুন Display চিঠিটি যদি বড় হয় তবে আপনার বর্ণমালার বড় অক্ষর প্রদর্শন করতে হয়। বর্ণমালাটি মুদ্রিত হওয়া অবশ্যই অবশ্যই প্রবেশ করানোটির পূর্বের বর্ণের শেষে শেষ হবে। যদি ইনপুটটিতে একটি অতিরিক্ত পরামিতি যুক্ত হয় (একটি সাধারণ বিন্দু .) বর্ণমালা প্রতিটি লাইনে একটি অক্ষর মুদ্রিত করা উচিত। অন্যথায়, বর্ণমালা একই লাইনে মুদ্রিত হওয়া উচিত, একটি সাধারণ স্থান দ্বারা বিচ্ছিন্ন। প্রোগ্রামটিতে যদি ভুল ইনপুট প্রেরণ করা হয় তবে এটি কিছুই মুদ্রণ করবে না।

ইনপুট উদাহরণ:

ইনপুট:

c

প্রোগ্রামের আউটপুট:

d e f g h i j k l m n o p q r s t u v w x y z a b

ইনপুট

H.

প্রোগ্রামের আউটপুট:

I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G

সেজ নোটবুক "কনসোল স্তরে" অপারেট করে, সুতরাং এই ক্ষেত্রে প্রয়োজনীয় "কনসোল ইনপুট" কি কেবল একটি ওয়ার্কশিট ঘরে ইনপুট টাইপ করতে হবে?
মাঝামাঝি

সংক্ষিপ্ততম কোড জিতেছে?
আগস্ট'১২

@ আরডনেইউ হ্যাঁ, সংক্ষিপ্ততম কোড জিতেছে।
অ্যাভেরোয়েস

@res আমি মনে করি যে আপনার কোনও উপায়ে ইনপুট রিডিং কোড করার দরকার পরে এটি নিয়মের দৃষ্টিকোণ থেকে ন্যায্য হতে পারে।
অ্যাভেরোয়েস

6
@ অ্যাভেরোস গল্ফস্ক্রিপ্ট ব্যবহারের জন্য জরিমানা হ'ল এমন একটি ভাষা শেখার জন্য সময় লাগে যা এই ধরণের প্রতিযোগিতার বাইরে প্রকৃত ব্যবহারের নয়। আমি মনে করি না যে কাজের জন্য সঠিক সরঞ্জামটি ব্যবহারের জন্য লোকদের দণ্ডিত করা খুব ফলপ্রসূ হতে চলেছে।
গ্যারেথ

উত্তর:


12

GolfScript 48 75 73 70 67 66 63 57 53

(91,65>.+.{32+}%+.@?>(;25<''+.,1>*\['''.']?[' 'n 0]=*

অনলাইন ডেমো:

হালনাগাদ:

এখন শেষ বিধিটিও কার্যকর করা হয়েছে। সমস্যাটি দেখানোর জন্য ভেন্টোরোর ধন্যবাদ জানাই

হালনাগাদ:

আমি কোডটি স্ক্র্যাচ থেকে পুনরায় লিখেছি এবং এটি আরও ছোট করার আরও নতুন উপায় খুঁজে পেয়েছি।

পরিবর্তনের ইতিহাস:

.,3<\(:x;:§['''.']?)and{91,65>.+.{32+}%+.x?).{>25<''+{§n' 'if}%}{;;}if}''if
.,3<\(:x;:§['''.']?)*{91,65>.+.{32+}%+.x?).{>25<''+{§n' 'if}%}{;;}if}''if
.,3<\(:x;:§['''.']?)*{91,65>.+.{32+}%+.x?).!!@@>25<''+{§n' 'if}%*}''if
.,3<\(:x;:§['''.']?)*!!91,65>.+.{32+}%+.x?).!!@@>25<''+{§n' 'if}%**
.,3<\(:x;:§['''.']?)*91,65>.+.{32+}%+.x?).@@>25<''+{§n' 'if}%@@*!!* 
.(@,3<@:§['''.']?)*91,65>.+.{32+}%+@1$?).@@>25<''+{§n' 'if}%@@*!!*
.(@,3<@:§['''.']?)*91,65>.+.{32+}%+@1$?):x>25<''+{§n' 'if}%\x*!!*
.(@,3<@:§['''.']?)*91,65>.+.{32+}%+@1$?):x>25<''n' 'if*\x*!!*
(\:§['''.']?)91,65>.+.{32+}%+@1$?):x>25<''n' 'if*\x*!!*
(91,65>.+.{32+}%+.@?>(;25<''+.,1>*\['''.']?[' 'n 0]=* 

2
এই সমাধানটি শেষের প্রয়োজনীয়তাটি অনুসরণ করে না:If wrong input is send to the program it will not print anything.
ভেন্টোরো

@ ভেন্টো রাইট আমি এটা ঠিক করব।
ক্রিশ্চিয়ান লুপাস্কু

63 - দুর্দান্ত, আমরা মাথা হেঁট করছি :), আশা করি আমি গল্ফস্ক্রিপ্ট বুঝতে পারতাম;)
বুয়া

আমি প্র। সম্পর্কে একইভাবে অনুভব করি দুর্দান্ত কাজ! ;-)
ক্রিশ্চিয়ান লুপাস্কু

+1 দুর্দান্ত! 50 ;-) ভাঙ্গতে ইচ্ছুক?
বুয়া

10

সি, 135 129 128 অক্ষর

অভিশাপ, এতগুলি বিভিন্ন ম্যাজিক নম্বর, তবে এগুলি থেকে মুক্তি পাওয়ার কোনও উপায় নেই।

প্রোগ্রাম প্যারামিটার হিসাবে ইনপুট দিয়ে চালাতে হবে। এখন "ভুল ইনপুট" প্রয়োজনীয়তা অনুসরণ করে।

c;main(a,b)char**b;{if(a==2&&isalpha(**++b)&&!(c=1[*b])||c==46&&!2[*b])for(;++a<28;)printf("%c%c",**b-=**b+6&31?-1:25,c?10:32);}

ব্যাখ্যা:

c;                   // Variable that will be used later
main(a,b)char**b;{   // There's one parameter => a = 2, b[1] = the parameter
                     // Wrong input checks: We want...
  if(
     a==2 &&         // 1 parameter and ...
     isalpha(**++b)  // lower- or uppercase letter as parameter,
                     // increase b so we can access it better
     &&              // and ...
     !(c=1[*b]) ||   //   either no further character,
                     //     save the character in c, or...
     (c==46&&!2[*b]) //   a dot as next character and no further characters
    )                // if check succeeded, execute the for loop, else do nothing
  for(;++a<28;)      // This will loop 26 times (2..27)
    printf("%c%c",   // Print two characters
                     // First character to print:
      **b            // We'll print the first character of the parameter,
       -=            // but decrement it before printing
       **b+6&31?     // if the last five bits (31 = 11111b) are not 26 (6 == -26 mod 32)
        -1           //   decrement it by -1 (aka increment it)
        :25,         //   else (char=z/Z) decrement by 25, so we start over at a/A
                     // Second character to print:
      c?             // c is either ASCII 0 or a dot (ASCII 46)
       10            //   dot     -> print a newline
       :32);         //   ASCII 0 -> print a space (ASCII 32)
}

**b+6&31অংশ সত্য যে ছোট হাতের / বড় হাতের অক্ষরের জন্য ASCII কোড একই শুধুমাত্র যদি শেষ 5 বিট দিকে তাকিয়ে এবং অবশিষ্ট 5 বিট পরিসীমা 1..26 হয় ব্যবহার করে।

"ভুল ইনপুট" প্রয়োজনীয়তা ছাড়াই সংস্করণ (৮২ টি অক্ষর):

main(a,b)char**b;{for(b++;++a<28;)printf("%c%c",**b-=**b+6&31?-1:25,1[*b]?10:32);}

এটি সংকলন করার জন্য কোনও নির্দেশনা? দৌড়ানোর সময় আমি সেগমেন্টেশন ত্রুটি পাই।
manatwork

@ মানাত ওয়ার্ক ইনপুটটিকে প্যারামিটার হিসাবে গ্রহণ করবে বলে মনে হচ্ছে।
shiona

হ্যাঁ, প্রকৃতপক্ষে স্পষ্ট করার জন্য সম্পাদিত। উদাহরণস্বরূপ যদি প্রোগ্রামটির নাম হয় তবে testএটিকে কল করুন test cবাtest X.
schnaader

ধন্যবাদ, পেয়েছি আমার সি আমার কাছে যা মনে হয়েছিল তার চেয়ে রুষ্ট বলে মনে হচ্ছে।
manatwork

2
কে & R এর সংজ্ঞা শৈলী সাহায্য করতে পারেন: main(a,b)char**b;{। এছাড়াও, একটি b++আপনাকে *b[1]-> **bএবং b[1][1]-> প্রতিস্থাপন করতে দেয় 1[*b]
ugoren

7

রুবি, 72 71 61 টি অক্ষর

gets;25.times{$><<$_=$_.succ[0]+=$1?$/:' '}if~/^[a-z](\.)?$/i

এই রুবি সংস্করণটি ইনপুট যাচাই করতে একটি নিয়মিত অভিব্যক্তি ব্যবহার করে। ভাগ্যক্রমে, রুবি স্ট্রিং পদ্ধতিটি succআমাদের বেশিরভাগ কাজ করে (মোড়কের চারপাশ সহ)।

সম্পাদনা করুন: ক্রোন এবং ভেন্টোরোর সাহায্যে 61 টি অক্ষর ।


আমার আলাদাভাবে পোস্টিং বিরক্ত করার জন্য আপনার সাথে সমানভাবে শেষ হয়েছিল। একই দৃষ্টিভঙ্গি, তবে কয়েকটি অক্ষর ছোট (65):c=gets[0];25.times{$><<c.next![-1]+($1?$/:' ')}if~/^[a-z](\.)?$/i
পল প্রেস্টিজ

2
এবং এটি 62: gets;25.times{$><<$_=$_.next[0]+($1?$/:' ')}if~/^[a-z](\.)?$/i- মূলত আপনার ঠিক গালি দেওয়ার মতো $_এবং$/
পল প্রেস্টিজ

2
@ ক্রোন: এর +=পরিবর্তে ব্যবহার করে +, আপনি প্রায় প্রথম বন্ধনী ফেলে দিতে পারেন $1?$/:' '
ভেন্টোরো

@ ক্রোন এবং ভেন্টোরো: আপনাকে ধন্যবাদ আমার কোডটিতে আপনার কোড যুক্ত করেছে।
হাওয়ার্ড

6

রুবি: 127 113 92 (?) অক্ষর

(আমি পেনাল্টি স্কোরটি ব্যবহারের নিয়মটি খুঁজে পাচ্ছি না -pnow এখনই 1 টি যুক্ত হয়েছে wrong ভুল হলে দয়া করে আমাকে সংশোধন করুন))

$_=if ~/^([a-z])(\.)?$/i;s,e=$1>?Z?[?a,?z]:[?A,?Z];[*$1.succ..e,*s...$1]*($2==?.?$/:" ")end

নমুনা রান:

bash-4.2$ ruby -pe '$_=if ~/^([a-z])(\.)?$/i;s,e=$1>?Z?[?a,?z]:[?A,?Z];[*$1.succ..e,*s...$1]*($2==?.?$/:" ")end' <<< c
d e f g h i j k l m n o p q r s t u v w x y z a b

bash-4.2$ ruby -pe '$_=if ~/^([a-z])(\.)?$/i;s,e=$1>?Z?[?a,?z]:[?A,?Z];[*$1.succ..e,*s...$1]*($2==?.?$/:" ")end' <<< H.
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G

bash-4.2$ ruby -pe '$_=if ~/^([a-z])(\.)?$/i;s,e=$1>?Z?[?a,?z]:[?A,?Z];[*$1.succ..e,*s...$1]*($2==?.?$/:" ")end' <<< seven

6

রুবি, 101 95

i,d=gets.split''
[*?a..?z].join[/#{i}/i]
($'+$`).chars{|c|$><<(i>?Z?c:c.upcase)+(d==?.?$/:' ')}

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


অনুসরণ করে না "যদি ভুল ইনপুট প্রোগ্রামে প্রেরণ করা হয় তবে এটি কোনও কিছুই মুদ্রণ করবে না।"
ম্যাট

('a'..'z').to_a=> এর সাথে কয়েকটি অক্ষর বাঁচাতে পারে[*?a..?z]
পল প্রেস্টিজ

@ ক্রন ধন্যবাদ! আমি কীভাবে এটি মিস করতে পারি ..
22:32

6

গল্ফস্ক্রিপ্ট, 80 72 অক্ষর

.).46={;)}*25,{65+.32+}%?)\""=*!!\([{)..31&26-!26*-}25*;]n+\"."=n" "if**

প্রচুর কোড বৈধ ইনপুট এবং "কিছু না মুদ্রণ" -প্রশারণার জন্য পরীক্ষা করছে। আসল যুক্তি কেবলমাত্র 37 টি অক্ষর।

টেস্ট কেস অনলাইন


6

q / k4 66 64 63 60 58 56 + 2 জরিমানা

গ্লোবাল ভেরিয়েবল initের জন্য জরিমানা, অ্যালগরিদম নীচে হিসাবে 56:

56:

if[&/x in".",l:(a;A)90>*x;1@/1_,/|_[0,l?x;l,'"  \n"@#x]]

58:

if[&/x in".",l:(a;A)90>*x;1@/(1_,/|_[0,l?x;l]),'"  \n"@#x]
  • কোডটিকে পুনর্গঠিত করার অনুমতি দেওয়া হলে "-" থেকে পরিবর্তন করুন এবং ";" থেকে মুক্তি পান শেষে

60:

1@/$[&/x in".",l:(a;A)90>*x;1_,/|_[0,l?x;l];" "],'"  \n"@#x;
  • অবশেষে এই অপ্রয়োজনীয় চেক থেকে মুক্তি পেয়েছে

63:

1@/$[&/x in".",l:(a;A)90>*x;1_,/|_[0,l?x;l];" "],'" \n""."in x; 
  • মুদ্রণযোগ্য অক্ষরগুলির পরিবর্তে একটি সম্পূর্ণ অবজেক্টের পুনরাবৃত্তি করুন
  • এখনও পরিচয় তুলনা x তে উঠতে পারে না "" দুটি জায়গায় ... :(
  • শেষে সেমিকোলন প্রয়োজন, অন্যথায় মুদ্রণ ফাংশন (1 @) এটির মানটি স্টাডাউটে প্রিন্ট করবে .... জঘন্য

64:

2@,/$[&/x in".",l:(a;A)90>*x;1_,/|_[0,l?x;l];" "],'" \n""."in x;  

সম্পাদনা করুন:

বিশ্বব্যাপী সূচনা (x :) এর জন্য 2 জরিমানা যুক্ত করা হয়েছে, যদি বন্ধনীতে ফাংশন মোড়ানো (স্ল্যাকওয়্যারের পরামর্শ অনুসারে)
নামস্থান পরিবর্তন করার পাশাপাশি শাস্তি দেওয়া উচিত কিনা তা নিশ্চিত নয় ... তবে এটি আরও 3

(.Q`a`A) instead of (a;A)

উদাহরণ:

q)\         - switch interpreter to k4
 \d .Q     - change to native namespace
  x:"c"
  if[&/x in".",l:(a;A)90>*x;1@/1_,/|_[0,l?x;l,'"  \n"@#x]]
d e f g h i j k l m n o p q r s t u v w x y z a b

  x:"@"
  if[&/x in".",l:(a;A)90>*x;1@/1_,/|_[0,l?x;l,'"  \n"@#x]]    
  x:"H."
  if[&/x in".",l:(a;A)90>*x;1@/1_,/|_[0,l?x;l,'"  \n"@#x]]
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
  x:...

+1 দুর্দান্ত অগ্রগতি। আমি আমার কোডটি এখন ছোট করার জন্য আরও একটি উপায় সন্ধান করার চেষ্টা করব।
ক্রিশ্চিয়ান লুপাস্কু

যদি এটি QK- এ সংজ্ঞা ব্যবহার করে তবে কী সত্যই এটি বৈধ কে বলা যেতে পারে? ;-) এছাড়াও, আপনি যদি এটি কোনও ফাংশনে
মুড়ে ফেলে থাকেন

@ স্ল্যাকওয়্যার আপনি ঠিক বলেছেন, এ কারণেই এটিকে q / k4 ;-) বলা হয়।
বুয়া

6

পার্ল, 131 127 117 112 106 104 102 98 96 92 91 90 93 71 66 65 64 58 টি অক্ষর

s!^([a-z])(\.?)$!print chop,$2?$/:$"for($1..az)[1..25]!ie

ব্যবহার:

perl -ne 's!^([a-z])(\.?)$!print chop,$2?$/:$"for($1..az)[1..25]!ie'

nবিকল্পটির জন্য একটি চরিত্র গণনাতে যুক্ত করা হয়েছে ।

জোন পুরির উত্তরের++ চরিত্রগুলিতে আচরণ দেখে কারণ সবচেয়ে বড় কাটা সম্ভব হয়েছিল ।


আপনি শেষ 2 টি সেমিকোলনগুলি সরিয়ে কয়েকটি দম্পতি শেভ করতে পারেন

ধন্যবাদ :-)
গ্যারেথ

1
এই জিনিসটি চিত্তাকর্ষক
বুয়া

@ বুয়া ধন্যবাদ, আমি এখনও চরিত্রগুলি সন্ধান করার চেষ্টা করছি যাতে আমি আপনাকে ও ডাব্লুএফএফকে ধরতে পারি। :-)
গ্যারেথ

s/a.$1/az/আরও 2 টি বাঁচাতে chop().($2?$/:$")-> chop,$2?$/:$"4 আরো
ভিড়

5

পার্ল, 149 , 167

হালনাগাদ

  • স্যানিটি পরীক্ষা করা হয়েছে।
  • বিভাজক অ্যাপ্লিকেশন সম্পর্কে অর্ডন পরামর্শ গ্রহণ।
exit if $ARGV[0] !~ /[a-z]\.?/i;    # sanity check input
($x,$d)=split //,$ARGV[0];          # split input arguments
@l=65..90;                          # define uc letter range
push @l,splice @l,0,ord(uc $x)-64;  # rotate letter range
pop @l;                             # remove the argument letter
print join $d?$/:$",                # print the joined list
  map {ord($x)>90?lc chr:chr} @l;   # map chr and lc as appropriate

আপনি $s=($d)?"\n":" ";$s=$d?$/:$";$s
এটির

4

পাইথন, 83

r=raw_input()
i=ord(r[0])
exec"i+=1-26*(i%%32>25);print chr(i)%s;"%","["."in r:]*26

আমি এই বিধিনিষেধের একজন অনুরাগী নই, তবে এটি বিদ্যমান এবং আপনার প্রোগ্রামটি এটি অনুসরণ করে না: "যদি ভুল ইনপুট প্রোগ্রামটিতে প্রেরণ করা হয় তবে এটি কিছুই মুদ্রণ করবে না।"
ম্যাট

এছাড়াও, দেখে মনে হচ্ছে আপনি নিজের চেয়ে আরও একটি অক্ষর মুদ্রণ করেছেন। উদাহরণ আউটপুট 25 অক্ষর।
ম্যাট

4

পিএইচপি, 120 119 113

<?$v=fgets(STDIN);$f=$c=$v[0];ctype_alpha($c++)||die;for(;$c[0]!=$f;$c=$c[0],$c++)echo$c[0],$v[1]=='.'?"\n":" ";

1
এটি একটি কোড-গল্ফ চ্যালেঞ্জ, সুতরাং গতি এবং সংস্থান ব্যবহারের অপটিমাইজেশন প্রয়োজন হয় না। $v[1]=='.'?"\n":" "ভেরিয়েবলের ফলাফল সংরক্ষণের পরিবর্তে পিএইচপি echoবিবৃতিতে প্রতিবার এটি গণনা করা যাক । এইভাবে আপনি 6 টি অক্ষর বাঁচাতে পারেন।
manatwork

1
@ মান্যাটওয়ার্ক আপনাকে ধন্যবাদ, আমি এটি পরিবর্তন করেছি।
লোর্টাব্যাক

4

গণিত 158 159 204 199 183 167 165 162

কোড

f@h_ := Most@RotateLeft[#, Position[#, h][[1, 1]]] &[FromCharacterCode /@ 
        (65~Range~90 + 32 Boole@LowerCaseQ@h)];
g = Characters@# /. {{p_} :> Row[f@p, " "], {p_, "."} :> Column@f@p, _ -> ""} &

ব্যবহার

g["c"]
g["H"]
g["H."]
g["seven"]

ব্যবহার


তৃতীয় ব্যবহারের ক্ষেত্রে চ ["এইচ"] বা চ ["এইচ।"]?
অ্যাভেরোয়েস

কোডটিতে 50 টি অক্ষর যুক্ত করে আমাকে "।" এর হ্যান্ডলিং ঠিক করতে হয়েছিল। তবে এটি এখন নির্দেশাবলী অনুসারে কাজ করে
ডেভিডসি

3

জে 43

|:1j1#(25{.(u:,2#65 97+/i.26)(>:@i.}.[)])"0

উদাহরণ:

|:1j1#(25{.(u:,2#65 97+/i.26)(>:@i.}.[)])"0 's'

tuvwxyzabcdefghijklmn opqr

|:1j1#(25{.(u:,2#65 97+/i.26)(>:@i.}.[)])"0 's.'

T
U
v
W
X
Y
z- র
একটি











মি
এন

পি
কুই
R

|:1j1#(25{.(u:,2#65 97+/i.26)(>:@i.}.[)])"0 '['

এই সমাধানটি জে প্রোগ্রামিং ফোরামে বিবর্তিত হয়েছে: http://jsoftware.com/pipermail/programming/2012- অগাস্ট / 029072.html

লেখক: অ্যালভার্ডবস কেরোভস্কি সাইরেল্লার হুই ল্যামবার্ট ম্যাককর্মিক মিলার কুইন্টানাশোট শেরলক টেলরথেরিয়াল্ট

ব্যাখ্যা

জে বাক্যাংশটি ডান থেকে শুরু করে কার্যকর করা হয়, মূল্যায়ন হওয়ার সাথে সাথে চলমান ফলাফলকে বামে দিয়ে যায়। যেহেতু এটি ইন্টারেক্টিভ, তাই সমাধানের টুকরোগুলিকে আমরা আরও বিস্তৃতভাবে বুঝতে পারি look

মাঝের অংশটি ইউনিকোডে উপরের এবং নিম্নতর বর্ণমালা উত্পন্ন করে:

   u:,2#65 97+/i.26
ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz

"U:" ক্রিয়াটি তার অঙ্কের ডান যুক্তিকে ইউনিকোডের অক্ষরে রূপান্তরিত করে। "I.26" দ্বারা উত্পাদিত 0 থেকে 25 পর্যন্ত মানগুলিতে "A" এবং "a" এর জন্য প্রতিটি সংখ্যার যোগ করে উপরের এবং নিম্ন-অক্ষরের অক্ষরের জন্য ASCII মান থেকে সংখ্যার যুক্তি তৈরি করা হয়:

   65 97+/i.26
65 66 67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

ডান হাতের অংশ,

   ((>:@i.}.[)])"0

বামে ([)) ডান যুক্তি (]) - যা উপরের বর্ণগুলির ভেক্টর - এবং সংখ্যার চেয়ে আরও একটি (>) ড্রপ করে (i।) দেখায় i '"0' 0 টি-মাত্রিক (স্কেলার) আর্গুমেন্টে এই শব্দবন্ধটি প্রয়োগ করে।

   ('123H999' (>:@i.}.[)])"0 'H'
999

"25 {।" বাক্যাংশটি ডানদিকে ভেক্টরের প্রথম 25 টি উপাদান নেয়।

বামদিকে পেনাল্টিমেট বাক্যাংশ "1j1 #" বামের সংখ্যা অনুযায়ী তার ডান যুক্তিকে প্রতিলিপি করে। একটি সাধারণ সংখ্যা একটি সাধারণ প্রতিলিপি করে:

   2 # 'ABCD'
AABBCCDD

যাইহোক, একটি জটিল সংখ্যা - আসল এবং কাল্পনিক অংশগুলির মধ্যে "জ" দ্বারা নির্দেশিত - কাল্পনিক অংশ অনুযায়ী একটি পূরণ উপাদান সন্নিবেশ করে। এখানে আমরা "জে" এর ডানদিকে একটি পূরণের উপাদানটি নির্দেশ করি।

   2j1 # 'ABCD'
AA BB CC DD 

বেশিরভাগ জে আদিম ব্যক্তির মতো, প্রতিলিপি ক্রিয়া (#) এটি কীভাবে চরিত্রের অ্যারেগুলিতে কাজ করে তা আনলজ ফ্যাশনে সংখ্যাসূচক অ্যারেগুলিতে কাজ করে। এখানে প্রদর্শিত হিসাবে,

   1j1 # 1 2 3
1 0 2 0 3 0

আমরা দেখতে পাচ্ছি ডিফল্ট সংখ্যার ভরাট উপাদানটি শূন্য এবং অক্ষরের ক্ষেত্রে এটি স্থানের অক্ষর।

অবশেষে, বামতমতম টোকেন "|:" পূর্ববর্তী ক্রিয়াগুলির ফলাফলটিকে তার ডানে স্থানান্তরিত করে।

ডেভন ম্যাককর্মিক প্রদত্ত ব্যাখ্যা। ধন্যবাদ ডিভন


+1 সত্যিই দুর্দান্ত সমাধান এবং ব্যাখ্যা। আমি এটি জেতে চেষ্টা করে দেখেছি তবে ইনপুটটি বৈধ ছিল কিনা তা পরীক্ষা করার জন্য একটি ভাল উপায় (একটি সংক্ষিপ্ত পথ) চিত্রিত করতে পারিনি। আমি মনে করি আমার এই হিসাবে কমপক্ষে দ্বিগুণ হয়ে থাকত।
গ্যারেথ

ধন্যবাদ গ্যারেথ, আপনি যদি আলোচনার লিঙ্কের প্রাথমিক সমাধানগুলি দেখেন তবে আপনি দেখতে পাবেন আমাদের অনেকগুলি সূচনা দীর্ঘ ছিল। আমরা যে ঝরঝরে পরিষ্কার জিনিস খুঁজে পেয়েছি তা হ'ল আমরা জে চিয়ার্স, বব
বব থ্রিরিয়ালের সাথে

3

ব্রেনফাক, 303

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

বর্তমানে এটি If wrong input is send to the program it will not print anythingঅংশটি সমর্থন করে না , এবং এটি সম্ভবত সংক্ষিপ্ত হতে পারে। আমি পরে এটি ঠিক করার পরিকল্পনা করছি। এই মুহুর্তে আমার মস্তিষ্কটি খুব বেশি **** চালিয়ে যাওয়ার এড।


2

সি, 110

কখনও কখনও অক্ষরের মধ্যে "স্পেস" মুদ্রণ করে, কখনও কখনও না।

i,j;main(int c,char*l){gets(l);l[1]&=10;j=*l%32;c=*l&~31;for(i=j;i<j+25;i++){l[0]=c+i%26+1;printf("%2s",l);}}

আরও স্বল্প পাঠযোগ্য:

i,j;
main(int c,char*l)
{
  gets(l);
  l[1]&=10;          // makes . to line feed and some other chars to "start of text" 
                     // which looks like space in some cases 
                     // (the byte can become either 0, 2, 8 or 10)

  j=*l%32;           // 0b 000c cccc, these five bits code which letter was chosen
  c=*l&~31;          // 0b ccc0 0000, these three bits code upper/lowercase

                     // 0b ccc0 0000 + (0b 000c cccc + [0..24])%26 + 1
  for(i=j;i<j+25;i++){l[0]=c+i%26+1;printf("%2s",l);}
}

রান:

$ ./a.out
G
 H I J K L M N O P Q R S T U V W X Y Z A B C D E F

$ ./a.out
p.
q
r
s
t
u
v
w
x
y
z
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o

2

জাভাস্ক্রিপ্ট, 137

দুর্ভাগ্যক্রমে কিছুটা ভার্বোজ ( String.fromCharCodeএবং charCodeAt)।

for(x=b=(n=prompt(m={122:97,90:65})).charCodeAt(r='');/^[a-z]\.?$/i.test(n)&&(x=m[x]||x+1)!=b;)r+=String.fromCharCode(x)+(n[1]?"\n":" ");

2

পার্ল, 77 76 70 68

chomp(($a,$b)=split//,<>);$"=$/if$b;map{++$a=~/(.)$/}1..25;print"@a"

সম্পাদনা:

  1. পরিবর্তে রেগেক্স ব্যবহার করে একটি অক্ষর সংরক্ষণ করা হয়েছে substr

  2. mapপরিবর্তে ব্যবহার করে 6 টি অক্ষর সংরক্ষণ করা হয়েছে for

  3. চূড়ান্ত নিউলাইনটি বাদ দিয়ে 2 টি অক্ষর সংরক্ষণ করা হয়েছে।


3
দুর্দান্ত, তবে আপনি যেভাবে উল্লেখ করেছেন এটি প্রয়োজনীয়তা পূরণ করে না যে অবৈধ ইনপুট কোনও আউটপুট দেয় না। এটি ঠিক করুন এবং আপনি আমার উপার্জন পাবেন।
গ্যারেথ

5.14.2 পার্লে আমার জন্য কাজ করছে বলে মনে হয় না। এছাড়াও আমি বিশ্বাস করি না যে \nআপনার ফাইনালে printএটি প্রয়োজনীয়, যা
কয়েকটা

@ অর্ডনিউ: আমি এটি আমার ওয়ার্ক কম্পিউটারে লিখেছি, যার 5.12.3 রয়েছে। \nধন্যবাদ মেরে ফেলবে ।
জন পুর্ডি

2

আর, 219

কুরুচিপূর্ণ, দীর্ঘ ... এখনও কাজ করে।

f=function(l){if(!nchar(l)%in%c(1,2))invisible()else{s=ifelse(nchar(l)==1," ","\n");l=substr(l,1,1);v=letters;if(l%in%v){}else v=LETTERS;l=grep(l,v);if(l==26)cat(v[1:25],sep=s)else cat(c(v[l+1:(26-l)],v[1:l-1]),sep=s)}}

ব্যবহার:

f("a")
f("c.")
f("H")
f("z")
f("Z.")
f("seven")

2

সি, ১৪6 টি চর (ভয়ানক)

main(){char b[100];gets(b);for(char a=b[0],c=a,d=a&223,e=b[1];++c!=a&64<d&d<91&(!e|e==46&!b[2]);(c&31)>26?(c&=96):(putchar(c),putchar(e?10:32)));}

আমি সি তে খুব অভিজ্ঞ নই, যা সম্ভবত ...> দেখায় < উন্নয়নের পরামর্শ দিতে নির্দ্বিধায় আমি এখানে আমার প্রচেষ্টাটি ছেড়ে দেব।

স্বাক্ষরিত সংস্করণ:

main() {
  char b[999]; // assume that the line will fit in 999 chars...
  gets(b);

  // a is the char we start on, c is the char that we iterate,
  // d is toUppercase(a), e is just an alias for the second char.
  for (char a = b[0], c = a, d = a&223, e=b[1];
      // increment c, make sure that we haven't reached a yet.
      // also check the other conditions (first char is letter, second char
      // is either '.' or NULL, third char is NULL if second char was '.').
      ++c != a & 64 < d & d < 91 & (!e | e == 46 & !b[2]);
      (c&31) > 26     // check if we need to wrap around
        ? (c &= 96)   // if so, wrap
        : (putchar(c), putchar(e?10:32))  // otherwise, print char & separator
  );
}

2

ভিবিএ 225

তাত্ক্ষণিক উইন্ডো থেকে চালানোর জন্য বিন্যাসিত:

s=InputBox(""):n=Asc(Left(s,1)):l=Len(s):p=IIf(l<3,IIf(l=2,IIf(Right(s,1)=".",vbCr,"")," "),""):c=IIf(n>64 And n<91,65,IIf(n>96 And n<123,97,99)):o=n-c+1:If o>0 And p<>"" Then For i=o To o+24:x=x & Chr(i Mod 26+c) & p:Next:?x

স্বতন্ত্র লাইনে বিভক্ত হয়ে পড়েছে ( Subব্লকটি ঘিরে থাকা প্রয়োজন এবং printমডিউলে কাজ করার জন্য আলাদা পদ্ধতি প্রয়োজন , এভাবে কোডটি দীর্ঘতর করা):

s=InputBox("")
n=Asc(Left(s,1))
l=Len(s)
p=IIf(l<3,IIf(l=2,IIf(Right(s,1)=".",vbCr,"")," "),"")    
c=IIf(n>64 And n<91,65,IIf(n>96 And n<123,97,99))
o=n-c+1
If o>0 And p<>"" Then 
For i=o To o+24
x=x & Chr(i Mod 26+c) & p
Next
End If 'Not needed when completed in single line format
MsgBox x

2

জাভা 8, 127 বাইট

a->{String r="",d=a.length>1?"\n":" ";char c=a[0],C=c;for(;++c<(c<97?91:123);r+=c+d);for(c=C<97?64:'`';++c<C;r+=c+d);return r;}

ব্যাখ্যা:

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

a->{                        // Method with character-array parameter and String return-type
  String r="",              //  Result-String, starting empty
         d=a.length>1?      //  If the length of the input is larger than 1
            "\n"            //   Set the delimiter to a new-line
           :                //  Else:
            " ";            //   Set the delimiter to a space
  char c=a[0],              //  Get the input letter
       C=c;                 //  And create a copy of it
  for(;++c<(c<97?91:123);   //  Loop from this letter + 1 to (and including) 'Z'/'z'
    r+=c+d);                //   And append the result with a letter + the delimiter
  for(c=C<97?64:'`';++c<C;  //  Loop again from 'A'/'a' to (and excluding) the input-letter
    r+=c+d);                //   And append the result with a letter + the delimiter
  return r;}                //  Return the result

1

মাম্পস, 91 , 86 , 82 , 79 , 76

r t i t?1A.1"." s a=$A(t),p=a>90*32+65 f i=1:1:25 w *(a+i-p#26+p) w:t["." !

এমন আধুনিক ভাষা নয়;) আমি নিশ্চিত যে অপ্টিমাইজেশনের কিছুটা জায়গা বাকি আছে ..

ব্যাখ্যা:

r t 

ইনপুট পড়ুন

i t?1A.1"."

টি প্রয়োজনীয় ইনপুটটির সাথে মেলে কিনা তা পরীক্ষা করুন

s a=$A(t),p=a>90*32+65 f i=1:1:25 { w *(a+i-p#26+p) w:t["." !}

বর্ণমালা মাধ্যমে লুপ জন্য মৌলিক। মনে রাখবেন যে মাম্পস কঠোরভাবে বাম থেকে ডানদিকে মূল্যায়ন করছে। সত্য = 1, সুতরাং আপনি পি হিসাবে ফলাফল হিসাবে 65 বা 97 পান, # হল মডুলো অপারেটর

পরীক্ষা:

USER>d ^golf
d.e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
a
b
c

USER>d ^golf
tuvwxyzabcdefghijklmnopqrs
USER>d ^golf
h.i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
a
b
c
d
e
f
g

USER>d ^golf
hallo
USER>

(আপনার এটি চালানোর জন্য একটি মাম্পস রানটাইম এনভিও প্রয়োজন, অর্থাত্ কাচি)

সম্পাদনা: সাহসী শিরোনাম

সম্পাদনা: একটি ভুল সমাধান ছিল, এখনই স্থির। এটি নির্দেশ করার জন্য আরটিএফস এবং আভেরোইসকে ধন্যবাদ


কোডটি দৈর্ঘ্যে 79 টি
বর্ণ হিসাবে দেখা যাচ্ছে

দুর্ভাগ্যক্রমে প্রথম স্থানটি
notচ্ছিক

প্যারামিটার হিসাবে পাসের পূর্বের চিঠিতে পরীক্ষার কেসগুলি শেষ হয় না, সেগুলি কি?
অ্যাভেরোয়েস

1

জাভাস্ক্রিপ্ট: 141

c="",b=c[0].charCodeAt()<91,a="abcdefghijklmnopqrstuvwxyz",b&&(a=a.toUpperCase()),a=a.split(c[0]),a=a[1]+a[0],a=c[1]?a.split("").join("\n"):a

মন্তব্য করা সংস্করণ:

c="", //write input here (examples "a", "B", "c.", "D.")
b=c[0].charCodeAt()<91, //true for upperC, false for lowerC
a="abcdefghijklmnopqrstuvwxyz", //the abc
b&&(a=a.toUpperCase()), //if upper, turn main string to upperC
a=a.split(c[0]), //split by the first char of input
a=a[1]+a[0], //swap the two parts
a=c[1]?a.split("").join("\n"):a //if input second char, add breaklines in between
//the output is inside 'a'

jsFizz ডেমো


0

এটি এপিএল নিয়ে আমার প্রথম প্রচেষ্টা এখানে।

⍞{1 1≡(2⌈⍴⍺)⍴⍺∊'.',⍵:⊃(~=/2⍴⍺)⌷(,X,' ')(X←25 1⍴1↓(X⍳⊃⍺)⌽X←(⎕A∊⍨⊃⍺)⌷2 26⍴⍵)}6↓26⌽⎕UCS 65+⍳58

যদি আমি একটি একক গ্লোবাল ভেরিয়েবল ব্যবহার করতে পারি A←2 26⍴6↓26⌽⎕UCS 65+⍳58তবে আমি উপরেরটি নীচে নীচে সংক্ষিপ্ত করতে পারি:

{1 1≡(2⌈⍴⍵)⍴⍵∊'.',,A:⊃(~=/2⍴⍵)⌷(,X,' ')(X←25 1⍴1↓(X⍳⊃⍵)⌽X←(⎕A∊⍨⊃⍵)⌷A)}⍞

0

সি ++ 11

#include <iostream>
#include <vector>
#include <cstdio>

int main(int argc, const char * argv[])
{
    std::vector<char> list1,list2;
    for( char c = 'a'; c <='z'; c++ )
    {
        list1.push_back( c );
        list2.push_back( toupper( c ) );
    }
    char c = getchar();
    auto f = [ c ]( std::vector<char> list )
    {
        auto i = std::find( list.begin(), list.end(), c );
        if( i == list.end() )
            return;
        auto c = i;
        for( ;; )
        {
            c++;
            if( c == list.end() ) c = list.begin();
            if( c == i )break;
            std::cout<<*c<<"\n";
        }
    };
    f( list1 );f(list2);
    return 0;
}

0

সি (111)

main(int i, char**c){if(isalpha(*c[1]))for(i=0;i<25;i++) printf("%c",isalpha((*c[1])+1)?++*c[1]:(*c[1]-=25));}

ব্যবচ্ছেদ

if(isalpha(*c[1])) // start with char-check.

for(i=0;i<25;i++) // we need 25 values, excluding input char. reusing i.

printf("%c", // print char. ofcourse.

isalpha((*c[1])+1) ? ++*c[1] : (*c[1]-=25)); 
//check if we are past z/Z and fall back to a/A. 
//make that available to print. 

কর্ম] $। / সেরা 5

কর্ম] test। / সেরা ডাব্লু XYZABCDEFGHIJKLMNOPQRSTUV

কর্ম] test। / সর্বনিম্ন এম NOPQRSTUVWXYZABCDEFGHIJKL

কর্ম] $। / সেরা জি হিজল্ল্মনোপ্যাকার্টুউক্সিয্যাবসিডিএফ

কর্ম] $। / সেরা [

কর্ম] /। / সেরা একটি বিসিডিএফঘিজক্ল্মনোপাক্রাস্টুউক্লিজ

কর্ম] test। / সেরা জে ABCDEFGHIJKLMNOPQRSTUVWXY


কিছু চিন্তা করার জন্য আপনাকে ধন্যবাদ।


আপনি যদি নতুন 'যোগ করেন না তবে'। দেওয়া হয়. এছাড়াও, যদি ইনপুটটি না হয় তবে আপনার কিছু আউটপুট করা উচিত নয় [A-Za-z]\.?, যদি আমি প্রশ্নটি সঠিকভাবে বুঝতে পারি।
মেরিনাস

# 1। উহু! আমি কোড শর্ট তৈরিতে নিমগ্ন ছিলাম .. # 2। পরীক্ষার আউটপুট দেখুন [] এটি কিছুই প্রিন্ট করে না। @মারিনাস
রচনা

0

পার্ল, 226 টি অক্ষর

die "Invalid input " if $ARGV[0] !~ /[a-z]\.?/i;
@listA=(a...z);
$index=ord(lc(substr($ARGV[0],0,1)))-97;
print join(substr($ARGV[0],1) ? "\n" : " ",map{$ARGV[0] =~ /[A-Z]/?uc $_:$_}(@listA[$index+1...25],@listA[0...$index]));

কোড ব্লক হিসাবে উপস্থিত হতে আপনি আপনার পাঠ্যকে ফর্ম্যাট করতে পারেন। আপনার পোস্ট ফর্ম্যাট করতে এখানে গাইড পড়ুন । এছাড়াও, আপনি একক অক্ষর ভেরিয়েবল নাম ব্যবহার করে কিছু অক্ষর সংরক্ষণ করতে পারেন।
গ্যারেথ

1
একটি অবৈধ ইনপুট কিছুই প্রিন্ট করা উচিত, তাই আপনার die বক্তব্য হ্রাস করা যায়, একটি গুচ্ছ সংরক্ষণ ...
গাফি

0

সি # 170

using System.Linq;namespace N{class P{static void Main(string[]a){foreach(char e in"abcdefghijklmnopqrstuvwxyz".ToCharArray().Where(o =>o>'c'))System.Console.Write(e);}}}

uncompressed

using System.Linq;
namespace N {
    class P {
        static void Main(string[]a){
            foreach (char e in "abcdefghijklmnopqrstuvwxyz".ToCharArray().Where(o => o > 'c'))
                System.Console.Write(e);
        }
    }
}

আপনার উত্তরের একটি ব্যাখ্যা যোগ করতে ভুলবেন না।
জাস্টিন

এই প্রোগ্রামটি এমনকি নিয়ম করে খেলতে চেষ্টা করে না। 1: চিঠিটি যদি বড় হাতের হয় তবে আপনাকে বর্ণমালার বড় হাতের অক্ষর প্রদর্শন করতে হবে। 2: মুদ্রিত বর্ণমালা অবশ্যই সন্নিবেশিতের পূর্বের বর্ণের শেষ হতে হবে। 3: যদি ইনপুটটিতে একটি অতিরিক্ত পরামিতি যুক্ত হয় (একটি সাধারণ বিন্দু) each বর্ণমালা প্রতিটি লাইনে একটি করে অক্ষর মুদ্রিত করা উচিত। অন্যথায়, বর্ণমালা একই লাইনে মুদ্রিত হওয়া উচিত, একটি সাধারণ স্থান দ্বারা বিচ্ছিন্ন। 4: প্রোগ্রামটিতে ভুল ইনপুট প্রেরণ করা থাকলে এটি কোনও কিছুই মুদ্রণ করবে না। এটি একটি 4-অফ-4 মিস।
রবিআইআইআই

^ এ ছাড়া আমি আপনাকে আমার পূর্ববর্তী মন্তব্যগুলি এখানে একবার দেখার জন্য অনুরোধ করছি । আপনি প্রতিস্থাপন করতে পারেন charসঙ্গে var, আপনার স্কোর এবং শেভ 1 পয়েন্ট আলগা .ToCharArray()(ক string হয় , হারান একটি গৃহস্থালি-বিন্যস্ত আপনি ইতিমধ্যে বারবার শেষ! পারে) string[] aযেহেতু আপনি কমান্ড আর্গুমেন্ট সঙ্গে তার আচরণ করছি না, নামস্থান হারান, তোমার অটল 'গ' কনসোল ইনপুট থেকে পড়া উচিত, বর্ণমালার স্ট্রিংটি হারাতে হবে এবং এর পরিবর্তে ASCII ব্যবহার করা উচিত; এটি আপনার পক্ষে দুর্দান্ত; আপনার বেশিরভাগ জমাগুলি কেবল ট্রল করছে বলে মনে হচ্ছে।
রবিআইআইআই

0

সি, 117

main(c,s,d){d=c=getchar(),s=getchar();for(s=s<0?32:s^46?0:10;d+=d+6&31?1:-25,s&&isalpha(c)&&d^c;printf("%c%c",d,s));}

ডি + 6 এবং 31 ট্রিকের জন্য স্কেনাডারকে ক্রেডিট।

http://ideone.com/ts1Gs9


0

বাশ: 110 বাইট

(([[ $1 =~ [a-z] ]]&&echo {a..z})||([[ $1 =~ [A-Z] ]]&&echo {A..Z}))|([ "${1:1:1}" = . ]&&sed 's/ /\n/g'||cat)

ব্যাখ্যার দিক থেকে, এটি বেশ সোজা, কোনও যাদু কৌশল নয় - এটি কেবল এমন কিছু যা বাশ অভ্যন্তরীণভাবে উপযুক্ত। অ-সুস্পষ্ট বিটের ক্ষেত্রে:

  • {a..z}বাশ একটি খুব underused কৌশল - এটি প্রসারিত a b c d...। সংখ্যার সিকোয়েন্স উত্পন্ন করতে আপনি একই কাজ করতে পারেন।
  • বাশ রেজেক্স ম্যাচিং করতে পারে, [[ $1 =~ [a-z] ]]একটি থেকে জেড পর্যন্ত অক্ষরের জন্য প্রথম প্রোগ্রামের তর্কটির বিরুদ্ধে একটি রেজেক্স ম্যাচ চালায়। তেমনিভাবে এজেডের জন্যও। আপনার এটির জন্য দ্বিগুণ বর্গাকার বন্ধনী প্রয়োজন, এটি [করতে পারবেন না।
  • ${1:1:1}$ 1 (প্রথম যুক্তি) এর একটি স্ট্রিংস পাওয়া যায়, একটি অক্ষর দীর্ঘ হয়, একটি অক্ষর দীর্ঘ হয় - এটি স্ট্রিংয়ের দ্বিতীয় অক্ষরটি প্রদান করে, যা আমরা প্রত্যাশা করি .
  • sed 's/ /\n/g'সরল রেজেক্স: নতুন লাইনের সাহায্যে স্থান অনুসন্ধান করে এবং প্রতিস্থাপন করে। যদি. স্ট্রিংয়ের দ্বিতীয় চরিত্রটি হয় তবে আমরা এটিতে ইনপুট পাইপ করব বা অন্যথায় ...
  • cat এখানে চূড়ান্ত কৌশল - আমরা যদি নতুন লাইনের সাথে স্পেসগুলি প্রতিস্থাপন করতে না চাই, তবে আমরা স্টিডিনকে বিড়ালকে খাওয়াই যা এটি আবার আউটপুট করে।

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