একটি শুরুর স্ট্রিং আঁকুন


26

( এই চ্যালেঞ্জ দ্বারা অনুপ্রাণিত ।)

ধরা যাক আমাদের একটি স্ট্রিং আছে ABBCBA। আমরা বলতে পারি মধ্যে বৃদ্ধি নেই Aএবং B, জন্য Bনিম্নরূপ A; আমরা বলতে পারি যে এর মধ্যে একটি রান আছে Bএবং Bকিছুই পরিবর্তিত হয় না; এবং পরিশেষে আমরা বলতে পারেন তার মাঝে একটি শরৎকাল Cএবং B। আমরা এর মতো একটি গ্রাফ আঁকতে পারি:

             A   B   B   C   B   A
Rising:        o       o
Continuing:        o
Falling:                   o   o

লেবেল ছাড়াই, এবং সাদা স্থানকে হ্রাস করুন:

o o
 o
   oo

এটি ইনপুটটির জন্য প্রত্যাশিত আউটপুট ABBCBA

oআউটপুটটিতে প্রতিস্থাপন করতে আপনি কোনও অ-হোয়াইটস্পেস অক্ষর ব্যবহার করতে পারেন । তদুপরি, প্রতিটি কলামে betweenচ্ছিকভাবে তাদের মধ্যে একটি অতিরিক্ত জায়গা থাকতে পারে:

o   o
  o 
      o o

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

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

TEST CASE
LINE 1
LINE 2
LINE 3

HELLOWORLD
 o oo o
  o
o    o oo

TESTCASE
 oo  o

o  oo o

EXAMINATION
o o o o o

 o o o o o

ZSILENTYOUTH
  o ooo o

oo o   o oo

ABC
oo



ABCBA
oo

  oo

প্রতিটি টানা প্রতিটি মধ্যে একটি জায়গা থাকতে পারে o, বা আউটপুট কমপ্যাক্ট হতে হবে?
জংহওয়ান ন্যূনতম

@ জেএইচএম নিশ্চিত, এটা ঠিক আছে।
কনর ও'ব্রায়েন

এছাড়াও, আউটপুটটি কি একটি স্ট্রিং হতে হবে, বা এটি কেবল উদাহরণের মতো দেখতে হবে?
জংহওয়ান মিন

@ জেএইচএম আপনি কী মনে মনে জড়িত?
কনর ও'ব্রায়েন

আমার মনে থাকা কোডটি একটি গ্রিড উত্পন্ন করে।
জংহওয়ান ন্যূনতম

উত্তর:


6

জেলি , 11 বাইট

OIṠ“ o ”ṙZY

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

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

OIṠ“ o ”ṙZY  Main link. Argument: s (string)

O            Ordinal; replace all characters with their code points.
 I           Increments; compute the differences of consecutive code points.
  Ṡ          Sign function.
   “ o ”ṙ    Rotate that string -1, 0, or 1 unit(s) to the left.
         Z   Zip; transpose rows and columns.
          Y  Join, separating by linefeeds.

11

গণিত, 93 83 68 64 বাইট

(ব্যবহার 0, না O)

Row[Column@Insert[{,},0,2-#]&/@Sign@Differences@LetterNumber@#]&

ব্যাখ্যা

LetterNumber@#

ইনপুটটির প্রতিটি অক্ষরের বর্ণমালায় অবস্থান অর্জন করে।

Sign@Differences@

প্রতিটি টানা উপাদানগুলির মধ্যে পার্থক্য নিয়ে যায় এবং সাইনটি নেয় ( -1negativeণাত্মক / পতনের 0জন্য, 0 / অব্যাহতভাবে, 1ধনাত্মক / উত্থানের জন্য)

Insert[{,},0,2-#]&

0দু'জনের তালিকায় একটি সন্নিবেশ করানো হয় Null, উত্থিত হলে প্রথম অবস্থানে, অবিরত থাকলে মাঝারি এবং পড়লে তৃতীয় অবস্থানে।

Row[Column@ ... ]

আউটপুট ফর্ম্যাট করে।


যদি প্রশ্নটির মধ্যে আউটপুটটি দেখতে আলাদা হয় তবে উপরের কোডটি 41 বাইটে সংক্ষিপ্ত করা যেতে পারে:

ListPlot@*Sign@*Differences@*LetterNumber

... যা এই জাতীয় কিছু তৈরি করে ("এবিবিসিবিএ" এর জন্য):

এখানে চিত্র বর্ণনা লিখুন


41 বাইটটি কেমন দেখাচ্ছে?
কনর ও'ব্রায়েন

@ কনরও ব্রায়ান দয়া করে সম্পাদনা দেখুন।
জংহওয়ান মিন

10

এমএটিএল , 15 , 14 বাইট

dZSqtQtQv~79*c

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

ব্যাখ্যা:

তারা বলছেন যে ছবিটি হাজার শব্দের মূল্যবান, সুতরাং এখানে একটি বিটা অনলাইন ইন্টারপ্রেটার রয়েছে যা আপনাকে আপডেট হওয়ার সাথে সাথে স্ট্যাকের শীর্ষের মানটি দেখায়। মনে রাখবেন এটি এখনও বিটাতে রয়েছে, তাই আপনাকে বেশ কয়েকবার রান করতে হবে।

সুতরাং প্রথম, আমরা কল dZSdআমাদের পর পরের প্রতিটি উপাদানের মধ্যে পার্থক্য ZSদেয় এবং প্রতিটি উপাদানটির চিহ্ন (-1, 0, বা 1) দেয়। আমাদের প্রথম পদক্ষেপের পরে ইনপুট হিসাবে 'HELLOWORLD' দিয়ে তাই:

-1  1  0  1  1 -1  1 -1 -1

এখন, আমরা কেবল এটি qহ্রাস করতে এবং পেতে:

-2  0 -1  0  0 -2  0 -2 -2

এবং তারপরে দু'বার আমরা স্ট্যাকের শীর্ষটিকে নকল করি এবং অ্যারের বৃদ্ধি করি ( tQ) এর পরে আমাদের এটি হবে

-2  0 -1  0  0 -2  0 -2 -2
-1  1  0  1  1 -1  1 -1 -1
0   2  1  2  2  0  2  0  0

এখন '0 এর সমস্ত যেখানে আমরা একটি অক্ষর আউটপুট করতে চাই। সুতরাং, আমরা এই তিনটি অ্যারেটিকে একটি ম্যাট্রিক্স ( v) এ যুক্ত করব এবং যুক্তিযুক্তভাবে এটি ( ~) অস্বীকার করব । তারপরে আমরা ম্যাট্রিক্সের প্রতিটি মানকে 'O', ( 79*) এর ASCII মান দ্বারা গুণিত করি এবং এর সাথে স্ট্রিং হিসাবে প্রদর্শন করি c


একবার আপনার ভেক্টর [-1, 1, 0, 1, ...] হয়ে গেলে আপনি তাদের কলাম সূচকগুলি [1,2,3,4, ...] এর সাথে বিচ্ছিন্ন ম্যাট্রিক্সের সারি সূচক হিসাবে ব্যবহার করতে পারেন, তারপরে এটি একটি সম্পূর্ণ ম্যাট্রিক্সে রূপান্তর করুন।
নিক

ঠিক আছে কিছুই নয়, এই পরামর্শটি চেষ্টা করে দেখে মনে হচ্ছে যে কোনও কিছু সংরক্ষণ করা যায়
নিক অ্যালগার

@ নিকআলগার যাইহোক টিপটির জন্য ধন্যবাদ! কৌতূহলবশত, আমি কি দেখতে এসেছি?
DJMcMayhem

অবশ্যই। নিম্নলিখিতটি ১৯ টি চর রয়েছে, যদিও এটি সম্ভবত কয়েকটি উন্নতি হতে পারে, ডিজেডএস 2 + টিএন: টিএনজেড? এক্সপিজি79 * সি
নিক

একটি দম্পতি অপ্টিমাইজেশন সহ 16 এ পেয়েছেন, ডিজেডএসকিউ_টিএন: এলজেড? 79 * সি
নিক

8

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

f w=[do(e,y)<-zip w$tail w;max" "['o'|b e y]|b<-[(<),(==),(>)]]

আউটপুটের রেখাগুলি উপস্থাপন করে তিনটি স্ট্রিংয়ের একটি তালিকা ফেরত দেয়। কোনও আঁচল বার্তা নেই।

ডায়ান doনোটেশন ব্যবহার করে এবং maxতালিকার বোঝার পরিবর্তে এবং তিনটি বাইট সংরক্ষণ করেছিল last


3
দুর্দান্ত, এতে কোনও পাতলা বার্তা নেই! ওইগুলো কি?
কনর ও'ব্রায়েন

5
['o'|b e y]..
ইজাবাহেব

হ্যাঁ, আমার মাস্টার অপেক্ষা করুন কি হচ্ছে?
ক্যালকুলেটরফলাইন

7

সিজেম , 19 বাইট

l2ew{:-g)S3*0t}%zN*

0পরিবর্তে ব্যবহার করে o

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

ব্যাখ্যা

l      e# Read input.
2ew    e# Get all pairs of consecutive letters.
{      e# Map this block over the pairs...
  :-   e#   Compute the difference between the two letters.
  g    e#   Signum. Gives -1 for rises, 1 for falls, 0 otherwise.
  )    e#   Increment. Gives 0 for rises, 2 for falls, 1 otherwise. Call this i.
  S3*  e#   Push a string with three spaces.
  0t   e#   Replace the i'th space (zero-based) with a zero.
}%
z      e# Transpose.
N*     e# Join with linefeeds.

6

পাইথন 2, 76 71 বাইট

lambda s:[''.join(' o'[cmp(*x)==n]for x in zip(s,s[1:]))for n in-1,0,1]

স্ট্রিংগুলির একটি তালিকা ফেরত দেওয়া অনুমোদিত বলে আমাকে অবহিত করার জন্য @ এক্সনরকে ধন্যবাদ জানাই।

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


আপনাকে তিনটি স্ট্রিংয়ের একটি তালিকা আউটপুট করার অনুমতি দেওয়া হয়েছে, যা আপনাকে একটি করতে দেয় lambda
xnor

আমি? যে সবকিছু পরিবর্তন।
ডেনিস

আমি মন্তব্যে জিজ্ঞাসা করেছি কারণ লিনের হাস্কেল উত্তরটি করছিল।
xnor

6

জাভাস্ক্রিপ্ট (ES6), 96 95 89 87 82 বাইট

2 টি বাইট 0পরিবর্তে ব্যবহার করে সংরক্ষণ করা হয়েছে o, যেমন কনর ওব্রায়েন প্রস্তাবিত
2 6 বাইট ইটিএইচ প্রডাকশনগুলিতে ধন্যবাদ সংরক্ষণ করেছে

let f =

s=>[1,0,-1].map(k=>s.replace(/./g,(c,i)=>i--?(c>s[i])-(c<s[i])-k&&' ':'')).join`
`

console.log(f("HELLOWORLD"));
console.log(f("EXAMINATION"));


1
যেহেতু আপনি যে কোনও চরিত্র ব্যবহার করতে পারেন, সাহায্যের সাথে প্রতিস্থাপন 'o'করা কি 0কোনও সাহায্য করে?
কনার ও'ব্রায়েন

@ কনরও ব্রায়েন - সত্যই, তা ঘটে। ;)
আর্নল্ড

1
আমার মনে হয় s=>[1,0,-1].map(k=>[...s].map(c=>(r=p?(c>p)-(c<p)-k&&' ':'',p=c,r),p=0).join``).join`\n` 2 বাইট সাশ্রয় হবে।
ETH প্রোডাকশনস

আপনি পূর্ববর্তী অক্ষরে প্রতিটি সময় দখল পরিবর্তে নিজে সম্পর্কে অবগত থাকার দ্বারা অন্য বাইট সংরক্ষণ করতে পারেন: s=>[1,0,-1].map(k=>[...s].map((c,i)=>(p=s[i-1])?(c>p)-(c<p)-k&&' ':'').join``).join`\n` s.replaceআপনাকে বেশ কয়েকটি বাইট ওভারও সাশ্রয় করবে [...s].map().join()
ETH প্রোডাকশনস

4

পার্ল, 47 বাইট

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

এসটিডিনে ইনপুট দিন:

bumpy.pl <<< ABBCBA

bumpy.pl:

#!/usr/bin/perl -p
$_ x=3;s%.%/\G(.)(.)/?$2cmp$1^$.&&$":--$.>0%eg

4

এমএটিএল, 16 14 বাইট

dZSqq_tn:79Z?c

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

এটি ডিজেএমসি মাহেমের উত্তরের আলোচনার মধ্য দিয়ে বেড়েছে । যদিও এই উত্তরটি একই দৈর্ঘ্যের 2 টি অক্ষরের বেশি , পদ্ধতিটি কিছুটা আলাদা তাই এটি স্বাধীন স্বার্থের হতে পারে।

2 টি বাইট সংরক্ষণের পরামর্শের জন্য লুইস মেন্ডোকে ধন্যবাদ (মন্তব্য দেখুন)

ব্যাখ্যা:

'ডিজেডএস' একটি ভেক্টর পেয়েছে যেখানে প্রতিটি এন্ট্রিটি যথাযথ অক্ষরের মধ্যে পার্থক্যের লক্ষণ হয়, তবে 'কিউকি_' প্রতিটি প্রবেশকে দু'টি দ্বারা কমিয়ে দেয় এবং চিহ্নটি উল্টে দেয়, তাই এখন যদি চরিত্রটি বৃদ্ধি পায় এটি 1 হয়, যদি এটি একই থাকে 2, এবং যদি এটি হ্রাস পায় 3. উদাহরণস্বরূপ,

dZSqq_ applied to 'HELLOWORLD' creates the vector [3 1 2 1 1 3 1 3 3]

এরপরে, 'টি' স্ট্যাকের উপর আগের ভেক্টরটির একটি অনুলিপি তৈরি করে, তারপরে 'এন:' ভেক্টরটিকে [1,2,3,4, ...] এছাড়াও স্ট্যাকের উপরে রাখে। তারপরে '79' স্ট্যাকের উপর 79 টি মান রাখে। 79৯ মানটি চয়ন করা হয়েছে কারণ এটি ইউনিকোড অক্ষর 'o' এর সংখ্যা, যা পরে আমাদের আউটপুট হবে। (লুইস মেন্ডোকে পরবর্তী সময়ের চেয়ে এখানে value৯ মান রাখার ধারণার জন্য ধন্যবাদ)

tn:79 applied to [3 1 2 1 1 3 1 3 3] creates the following items:
[3 1 2 1 1 3 1 3 3]   <-- first item on the stack
[1 2 3 4 5 6 7 8 9]   <-- second item on the stack
79                    <-- third item on the stack

এই মুহুর্তে আমাদের কাছে স্প্রস ম্যাট্রিক্সের সারি সূচকগুলি, কলাম সূচকগুলি এবং ননজারো মান রয়েছে যেখানে আমরা যেখানে আউটপুট চরিত্রটি চাই এবং যেখানে 0 যেখানে আমরা হোয়াইটস্পেস আউটপুট করতে চাই 0 এর মান রয়েছে has আমরা এই তিনটি আইটেমটিকে স্ট্যাকের বাইরে নিয়ে যাচ্ছি এবং এমএটিএল এর স্পার্স ম্যাট্রিক্স কমান্ড 'জেড?' দিয়ে এই স্পার্স ম্যাট্রিক্স তৈরি করি। এটাই,

dZSqq_tn:79 Z? applied to 'HELLOWORLD' outputs the following:
[0  79 0  79 79 0  79 0  0 ]
[0  0  79 0  0  0  0  0  0 ]   <-- 3-by-n sparse matrix
[79 0  0  0  0  79 0  79 79]

যা আছে তা হ'ল ম্যাট্রিক্সকে সংখ্যা থেকে ইউনিকোড অক্ষরে রূপান্তর করা যা 'c' কমান্ড দ্বারা সম্পন্ন হয়। 'S৯ এর 'ও' হয়ে যায়, এবং ০ এর স্থান হয়ে যায়:

dZSqq_tn:79Z?c applied to 'HELLOWORLD' outputs:
[  o   o o   o    ]
[    o            ]   <-- 3-by-n sparse matrix of characters.
[o         o   o o]

চরগুলির ফলাফল ম্যাট্রিক্সগুলি পরে স্পষ্টভাবে প্রদর্শিত হয়।


আপনি স্পার্স ম্যাট্রিক্সের ননজারো মান হিসাবে সরাসরি 79 ব্যবহার করতে পারেন, এভাবে দুটি বাইট সংরক্ষণ করা saving এছাড়াও, আমি মনে করি এটি প্রথমবারের মতো কোনও স্প্যাট উত্তরের ক্ষেত্রে স্পার্স ম্যাট্রিক ব্যবহার করা হয়েছে :-)
লুইস মেন্ডো

@ লুইস মেন্ডো ধন্যবাদ! আপনার প্রস্তাবিত পরিবর্তনটি করার জন্য আমি পোস্টটি সম্পাদনা করেছি
নিক

3

পিএইচপি, 95 বাইট

for($b[1]=$b[0]=$b[-1]=" ";($s=$argv[1])[++$i];)$b[$s[$i-1]<=>$s[$i]][$i]=8;echo join("\n",$b);

1. সূচক -1 থেকে 1 বিকল্পের সাথে একটি স্ট্রিংয়ের অ্যারে তৈরি করুন $b=array_fill(-1,3," ");

স্পেসশিপ অপারেটর এবং ইনপুটের অবস্থানের উপর নির্ভর করে স্ট্রিংগুলি পূরণ করুন

3.আউটপুট একটি নতুন লাইন দিয়ে অ্যারে যোগদান করুন

প্রথম উপায় 111 বাইট

for($o=" ";$i<$l=strlen($s=$argv[1])-1;)$o[$l*(1+($s[$i]<=>$s[$i+1]))+$i++]=8;echo join("\n",str_split($o,$l));

স্পেসশিপ অপারেটর স্পেসশিপ অপারেটরটি ব্যবহার করুন<=>


1
আপনি আপনার প্রোগ্রাম এনকোড তাহলে ল্যাটিন -1 , একটি সুবিধাজনক শর্টকাট "\n"গুরুতরভাবে না!
লিন

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

@ লিন বা ~ ³ ~ † ~ '~' ধারণাটির জন্য আপনাকে ধন্যবাদ। আমি
ইউনিকোডটি

2

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

s=>[s,s,s].map(f=([c,...s],n)=>(p=s[0])?((c<p)-(c>p)+n-1&&" ")+f(s,n):"").join`
`

স্ক্র্যাচ থেকে লেখা, যদিও এটি @ আরনল্ডের উত্তর থেকে ভারী অনুপ্রাণিত হয়েছিল । প্রতিটি সারির বিষয়বস্তু গণনা করতে পুনরাবৃত্তি ব্যবহার করে।



2

জাভা 7, 158 156 বাইট

String c(char[]z){String a,b,c=a=b="";for(char i=1,q=z[0],o=79,s=32,x;i<z.length;a+=(x=z[i])>q?o:s,b+=x==q?o:s,c+=x<q?o:s,q=z[i++]);return a+"\n"+b+"\n"+c;}

2 ফ্রাইট @ ফ্রোজেনকে ধন্যবাদ বাঁচিয়েছে ।

অবহেলিত ও পরীক্ষার কেস:

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

class M{
  static String c(char[] z){
    String a,
           b,
           c = a = b = "";
    for(char i = 1,
             q = z[0],
             o = 79,
             s = 32,
             x; i < z.length; a += (x = z[i]) > q
                                     ? o
                                     : s,
                              b += x == q
                                     ? o
                                     : s,
                              c += x < q
                                     ? o
                                     : s,
                              q = z[i++]);
    return a + "\n" + b + "\n" + c;
  }

  public static void main(String[] a){
    print("HELLOWORLD");
    print("TESTCASE");
    print("EXAMINATION");
    print("ZSILENTYOUTH");
    print("ABC");
    print("ABCBA");
    print("ABBCBA");
    print("UVVWVVUVVWVVUVVW");
  }

  static void print(String s){
    System.out.println(c(s.toCharArray()));
    System.out.println("-------------------------");
  }
}

আউটপুট:

 O OO O  
  O      
O    O OO
-------------------------
 OO  O 

O  OO O
-------------------------
O O O O O 

 O O O O O
-------------------------
  O OOO O  

OO O   O OO
-------------------------
OO


-------------------------
OO  

  OO
-------------------------
O O  
 O   
   OO
-------------------------
O O   O O   O O
 O  O  O  O  O 
   O O   O O   
-------------------------

1
আমি নিশ্চিত না যে এটি কাজ করে কিনা তবে a,b,c=b=a=""এটি আরও কম হবে।
26:30

@ ফ্রোজেন ধন্যবাদ, সম্পাদিত। এটা আসলে কাজ করে। PS: আপনি নিজেকে আদর্শভাবে পরীক্ষা করে দেখতে পারতেন। ;)
কেভিন ক্রুইজসেন

তুমি ঠিক বলছো! আমি লিঙ্কগুলি সর্বদা উপেক্ষা করছি এবং কেবল গ্রহণ শুরু করছি কেবল এটির জন্য উপযুক্ত নয় :)
ফ্রোজেন

2

ক্লোরা (20 বাইট)

<IN?o ;=IN?o ;>IN?o

ব্যাখ্যা:

এখানে 3 টি ক্লোরা প্রোগ্রাম রয়েছে, প্রতিটি আউটপুট লাইনের জন্য একটি।

প্রথম প্রোগ্রাম, <IN?o

বর্তমান ইনপুট চরটি পরবর্তী চরের চেয়ে Iছোট কিনা তা পরীক্ষা করুন । একটি বিশ্ব পতাকা মধ্যে ফলাফল সংরক্ষণ করুন। পতাকাটির ফলাফলটি যদি সত্য হয় তবে আউটপুট পরীক্ষা করুন , অন্যথায় ফাঁকা জায়গা (হ্যাঁ, সেখানে একটি ফাঁকা জায়গা রয়েছে।<N?o

অন্যান্য সমস্ত প্রোগ্রাম, একই নিয়ম অনুসরণ করে এবং দ্বারা পৃথক করা হয় ;, প্রতিটি প্রোগ্রাম কার্যকর করা হয় এবং যুক্তি হিসাবে ইনপুট গ্রহণ করে।

আপনি Clora.js সহ এটি নিজেই পরীক্ষা করতে পারেন এবং এটি দিয়ে চালিয়ে যেতে পারেন

(function() {
  var x = new Clora('<IN?o ;=IN?o ;>IN?o ');
  x.execute('EXAMINATION', function(r) {
    console.log(r)
  })
})();

এটি কঠোরভাবে প্রতিদ্বন্দ্বিতামূলক বলে মনে হচ্ছে, কারণ এটি এই চ্যালেঞ্জের পরে তৈরি হয়েছিল। এটি দেখতে যদিও আকর্ষণীয় ল্যাংয়ের মতো!
কনর ও'ব্রায়েন

1

পাইথ, 21 বাইট

jCmX*3\ h._d0-M.:CMz2

এমন একটি প্রোগ্রাম যা STDIN এ অনাবৃত স্ট্রিংয়ের ইনপুট নেয় এবং ফলাফল মুদ্রণ করে।

এটি @ মার্টিনইেন্ডারের সিজেএম উত্তরের অনুরূপ ধারণা ব্যবহার করে ।

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার ক্ষেত্রে যাচাই করুন

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

jCmX*3\ h._d0-M.:CMz2  Program. Input: z
                 CMz   Map ordinal over z, yielding the code-points of the characters
               .:   2  Yield all length-2 sublists of that
             -M        Map subtraction over that
  m                    Map the following over that with variable d:
         ._d            Yield the sign of d
        h               Increment that (i)
    *3\                 Yield string literal of 3 spaces, "   "
   X        0           Replace the space at index i with 0
 C                     Transpose that
j                      Join that on newlines
                       Implicitly print

1

পিএইচপি 7, 81 80 77 বাইট

দ্রষ্টব্য: উইন্ডোজ -১২২২ এনকোডিং ব্যবহার করে

for($x=2;~$x--;print~õ)for($a=$argn;$c=$a[$$x+1];)echo$c<=>$a[$$x++]^$x?~ß:o;

এভাবে চালান:

echo HELLOWORLD | php -nR 'for($x=2;~$x--;print"\n")for($a=$argn;$c=$a[$$x+1];)echo$c<=>$a[$$x++]^$x?" ":o;';echo

ব্যাখ্যা

লাইন ধরে iterates (সংখ্যাযুক্ত 1, 0, -1)। তারপরে প্রতিটি লাইনের জন্য ইনপুট স্ট্রিং দিয়ে পুনরাবৃত্তি হয়। যখন স্পেসশিপ তুলনার ফলাফল লাইন সংখ্যার সমান হয়, আউটপুট একটি o, অন্যথায়, একটি স্থান আউটপুট দেয়। প্রতিটি লাইনের পরে একটি নতুন লাইন মুদ্রণ করুন।

বদলান

  • যখন $xহয় তখন পুনরাবৃত্তি বন্ধ করুন -1, যা আমরা বাইনারি অবহেলা (ফলাফল 0) দ্বারা খুঁজে পেতে পারি । যুক্ত করার তুলনায় একটি বাইট সংরক্ষণ করে 1(বা প্রি-ইনক্রিমেন্ট সহ 2)।
  • ব্যবহার করে 3 বাইট সংরক্ষণ করা হয়েছে $argn

1
আপনি -d error_reporting=30709আপনার বাইট গণনায় যুক্ত করতে ভুলে গেছেন ।
তিতাস

@ টিটাস বিশ্বে আমার কেন এটি বাইট গণনায় যুক্ত করা দরকার? এটি কেবলমাত্র পিএইচপি বিজ্ঞপ্তিগুলি (যা অবহেলাযোগ্য) মুদ্রিত হয় না!
aross

যোগ করতে পারে 2>/dev/null, তবে তা মারাত্মক
সমস্ত


কিছু একটা If you get warnings, set the default value with ...। আমার পেডেন্টারি ক্ষমা করুন; আমি সেই মানটি ডিকোড করিনি।
তিতাস

0

লুয়া 326 303 বাইট টিএল = 0 এস = আইও.ড্রেড () ও 1, ও 2, ও 3 = "", "", "" টি = i} আই = 1, # এস ডু টি [আই] = এস: সাব (আমি) , i) ভি = 1 এর জন্য টিএল = টিএল + 1 শেষ, টিএল -1 করুন যদি টি [ভি] টি [ভি + 1] হয় তবে ও 1 = ও 1 .. "" ও 2 = ও 2 .. "" o3 = o3 .. " ও "শেষ প্রিন্ট (ও 1 .." \ n ".. ও 2 .." \ n ".. ও 3)

একটি অবারিত সংস্করণ

tl = 0 --set the tables length to 0
s = io.read() --Get the string from input
o1,o2,o3="","","" --Set the 3 output rows to empty strings
t = {} --Make a table for the string to be sent into
for i = 1, #s do --Loop from 1 to the length of the string
    t[i] = s:sub(i, i) --Set the I-th term in the table to the I-th character in the string
    tl = tl+1 --Add 1 to the table length
end --End the loop
for v=1,tl-1, 1 do --Loop from 1 to the tables length - 1, incrementing by 1
    if t[v] < t[v+1] then --Lua supports greater than less than and equals to with charactes, so this if statement detects if the string is rising
        o1=o1.."o" --Adds an o to the end of the first line of output
        o2=o2.." " --Adds a space to the second line
        o3=o3.." " --Adds a space to the third line
    elseif t[v] == t[v+1] then --Detects if the string is continuing
        o1=o1.." " --Adds a space to the first line
        o2=o2.."o" --Adds an o to the second line
        o3=o3.." " --Adds a space to the third line
    elseif t[v] > t[v+1] then --Detects if string is falling
        o1=o1.." " --Adds a space to the first line
        o2=o2.." " --Adds a space to the second line
        o3=o3.."o" --Adds an o to the third line
    end --Ends the if statement
end --Ends the loop
print(o1.."\n"..o2.."\n"..o3) --Prints the output

আমি মনে করি আপনি কিছু সাদা জায়গা থেকে গল্ফ করতে পারেন, বলুন t1 = 0? থেকে t1=0? এবং অনুরূপ জায়গা।
কনর ও'ব্রায়েন

আমি এখনই এটি ঠিক করব
অ্যালেক্স অ্যালেন

0

আর, 114 বাইট

একটি প্রতিযোগিতামূলক আর উত্তর।

v=y=z=rep(" ",length(x<-diff(utf8ToInt(scan(,"")))));v[x>0]="#";y[x==0]="#";z[x<0]="#";cat(v,"\n",y,"\n",z,sep="")

ব্যাখ্যা

  1. কমান্ড লাইন থেকে ইনপুট পড়ুন এবং এসসিআই দশমিক ভেক্টরে রূপান্তর করুন
  2. 1 ম পার্থক্য নিন এবং সাদা স্পেস সহ একই দৈর্ঘ্যের একটি 3x ভেক্টর তৈরি করুন
  3. তারপরে সাদা স্পেস ভেক্টরগুলি প্রতিস্থাপন করুন #যদি পার্থক্যগুলি হয় >0, ==0বা <0
  4. ভেক্টরদের জবরদস্তি করুন এবং তাদেরকে নিউলাইন দ্বারা পৃথক করে মুদ্রণ করুন

কেন নন-কেপেটিং?
কনার ও'ব্রায়েন

@ কনরোও ব্রায়েন আমি অনুমান করি যে এটি অন্য আর উত্তরের সাথে প্রতিযোগিতা করছে তবে মূল সমাধানটি দীর্ঘতর হওয়া এবং সাধারণ অর্থে আকর্ষণীয় হওয়ার পক্ষে যথেষ্ট অনন্য নয়।
বিলিউব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.