ওভারল্যাপিং স্ট্রিং-ব্লক


22

চ্যালেঞ্জ:

মাল্টি-লাইন স্ট্রিংগুলির একটি তালিকা দেওয়া, সেগুলি ওভারল্যাপ করুন (উপরের-বাম দিকে) এবং ফলাফলটি আউটপুট করুন।

উদাহরণ:

ইনপুট: ["aaaa\naaaa\naaaa\naaaa","bb\nbb\nbb","c"]
আউটপুট:

cbaa
bbaa
bbaa
aaaa

চ্যালেঞ্জ বিধি:

  • ইনপুট-ফর্ম্যাট নমনীয়। লাইনের 2 ডি তালিকা (যেমন [["aaaa","aaaa","aaaa","aaaa"],["bb","bb","bb"],["c"]]) বা অক্ষরের 3 ডি তালিকা (যেমন ) হিসাবে আপনাকে ইনপুটটি পাওয়ার অনুমতি দেওয়া হয়েছে [[["a","a","a","a"],["a","a","a","a"],["a","a","a","a"],["a","a","a","a"]],[["b","b"],["b","b"],["b","b"]],[["c"]]]। আপনাকে STDIN এর মাধ্যমে একের পর এক সমস্ত ইনপুট গ্রহণের অনুমতি দেওয়া হচ্ছে। প্রভৃতি
  • আউটপুট ফর্ম্যাট কঠোর। আপনি মাল্টি-লাইনের স্ট্রিং মুদ্রণ করতে বা ফিরে আসতে বেছে নিতে পারেন। (যদি আপনার ভাষার কোনও স্ট্রিং না থাকে তবে অক্ষরের 2D তালিকা হিসাবে আউটপুট প্রদানকে বিকল্প হিসাবে অনুমোদিত But তবে কেবল আপনার ভাষায় স্ট্রিং না থাকলে কেবল))
  • ইনপুট-তালিকার ক্রম অবশ্যই গুরুত্বপূর্ণ (তবে আপনি যদি চয়ন করেন তবে আপনাকে উল্টো দিকে ইনপুট নেওয়ার অনুমতি দেওয়া হবে)।
  • ইনপুটগুলিতে ইউনিকোড পরিসীমা [33,126] ( !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~) এ কেবল মুদ্রণযোগ্য এএসসিআইআই থাকবে ।
  • ইনপুটগুলি কেবল আয়তক্ষেত্রগুলি হবে (তাই কোনও অদ্ভুত আকার নয়)। যদিও আউটপুটটি প্রয়োজনীয় আয়তক্ষেত্র নয়।
  • ট্রেলিং স্পেস এবং একটি একক ট্রেলিং নতুন লাইন অনুমোদিত। শীর্ষস্থানীয় স্থান এবং / অথবা নিউলাইনগুলি নয়।

সাধারাইওন রুল:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার জন্য যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • আপনার উত্তরটির জন্য ডিফল্ট আই / ও বিধিগুলির সাথে মানক বিধিগুলি প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং ফিরতি-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে আপনার কোডের (যেমন টিআইও ) একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন ।
  • এছাড়াও, আপনার উত্তরের জন্য একটি ব্যাখ্যা যুক্ত করা অত্যন্ত প্রস্তাবিত।

পরীক্ষার কেস:

ইনপুট: ["aaaa\naaaa\naaaa\naaaa","bb\nbb\nbb","c"]
আউটপুট:

cbaa
bbaa
bbaa
aaaa

ইনপুট: ["12345\n54321","00\n00\n00\n00","001\n011\n012"]
আউটপুট:

00145
01121
012
00

ইনপুট: ["sm\noo\nmr\nee\nt!\nh_\ni_\nn_\ng_","!@#$%^\n&*()_+\nqwerty\nuiopas","this\nis_a\ntest"]
আউটপুট:

this%^
is_a_+
testty
uiopas
t!
h_
i_
n_
g_

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

@ জ্যাড হ্যাঁ নিশ্চিত, কেন নয়। যতক্ষণ না বাকি কোনও অগ্রণী স্থান / নিউলাইন ছাড়াই আউটপুট থাকে। ট্রেলিং করা নিউলাইন / স্পেসগুলি সত্যই গুরুত্বপূর্ণ নয়, তাই optionচ্ছিকভাবে যুক্ত করা যায়।
কেভিন ক্রুইজসেন

উত্তর:


6

জেলি , 3 বাইট

a/Y

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

কিছুক্ষণের মধ্যে জেলি ব্যবহার না করলেও আমি ভেবেছিলাম মন্তব্যে চ্যালেঞ্জটি হারাতে পারা যায়। aইনপুট ( /) এর প্রতিটি উপাদানগুলির মধ্যে স্ট্যাকিং অপারেশন সম্পাদন করতে খুব সরাসরি যৌক্তিক এবং ( ) ব্যবহার করে । Yপ্রয়োজনীয় বিন্যাসে মুদ্রণ করতে ব্যবহৃত হয়।


আহ ভাল! আমি জেলি টিবিএইচ নিয়ে বেশ খারাপ। আমার প্রস্তুত সমাধানটি ছিল ḷ""/Yএকটি বিপরীত ইনপুট-তালিকা সহ। এমনকি সম্পর্কেও জানতেন না a..
কেভিন ক্রুইজসেন

11

জাভাস্ক্রিপ্ট (নোড.জেএস) , 24 বাইট

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

ধরে নেওয়া হয়েছে যে ফেরত স্ট্রিংটি এমন একটি টার্মিনালে মুদ্রিত যা এএনএসআই এস্কেপ কোডগুলিকে সমর্থন করে । নিখরচায় অক্ষরটি রয়েছে ESC, যা নিচে যেমন পালিয়ে গেছে (কোনও পাং উদ্দেশ্য নয়) \x1B

a=>`\x1B[2J\x1B[H`+a.join`\x1B[H`

এটি টিআইওতে কাজ করে না, তবে আপনি এটি অনলাইনে চেষ্টা করতে পারেন ! পরিবর্তে কাঁচা আউটপুট দেখতে।

কিভাবে?

সিএসআই সিকোয়েন্স ব্যবহার করা হয়:

  • ইডি (প্রদর্শনে মুছা):

    ESC[2J

    যেখানে 2 অর্থ "সম্পূর্ণ পর্দা সাফ করুন"

  • CUP (কার্সার অবস্থান):

    ESC[H

    যার অর্থ "কার্সারটিকে সারি n , কলাম m " তে নিয়ে যায় যেখানে n এবং m উভয়ই বাদ দেওয়া হয় এবং স্পষ্টভাবে 1 (স্ক্রিনের উপরের-বাম কোণে) সেট করা হয়।

উদাহরণ আউটপুট

output


একটি ইসিএমএ-48 অনুবর্তী টার্মিনাল ধরে, আপনি উভয় বাদ দিতে পারেন ;। এছাড়াও, আমি মনে করি এটি "জাভাস্ক্রিপ্ট + টার্মিনাল" বা অনুরূপ কিছু হওয়া উচিত যা খাঁটি জাভাস্ক্রিপ্টের সাথে প্রতিযোগিতা করে না।
গ্রিমি

@ গ্রিমি ধন্যবাদ! (আগ্রহী প্রত্যেকের জন্য, এখানে ইসিএমএ -৮৮ স্পেসিফিকেশন রয়েছে - তবে সেমিকোলনটি বাদ দিতে পারে - যেখানে এটি উল্লেখ করা হয়েছে সেখানে আমি খুঁজে পাইনি if এটির উল্লেখ থাকলেও।)
আর্নল্ড

1
5.4.2.h কিছুটা confusingly ভাষায় করা হয়, কিন্তু আকর্ষণীয় বিট হল: if the last parameter sub-string(s) is empty, the separator preceding it may be omitted। যেহেতু কেবল দুটি সাব-স্ট্রিং রয়েছে তাই সর্বশেষ স্ট্রিংয়ের আগের বিভাজকটি একমাত্র এবং এটি বাদ দেওয়া যেতে পারে।
গ্রিমি

আমি এএনএসআই জানি না, তবে প্রথমটি কি \x1B[Hপ্রয়োজনীয়? এটি কি ডিফল্টরূপে উপরের-বামে শুরু হচ্ছে না, এবং আপনাকে কেবল প্রতিটি ইনপুটের পরে এটি পুনরায় সেট করতে হবে (যা যা ঘটে তাই কি)? বা এটি প্রাথমিকভাবে ডিফল্টরূপে অন্য কোথাও শুরু হয়েছে এবং যোগদানের সেই অবস্থানটিতে সফলভাবে পুনরায় সেট করার জন্য আপনাকে স্পষ্টভাবে এটি সেই কার্সার অবস্থানেই শুরু করতে হবে?
কেভিন ক্রুইজসেন

1
@ আর্নল্ড যেহেতু এই ফাংশনটি সম্পাদন করার সময় আপনার সম্ভবত টার্মিনালে সর্বদা অন্য কিছু থাকবে, আমার ধারণা প্রাথমিকভাবে পুনরায় সেট করার দরকার পরে। মুদ্রণ ommitting হিসাবে, আমি f=a=>print(`\x1B[H`+a.join`\x1B[H`)সঙ্গে f(input_here)হিসাবে একই আউটপুট উত্পাদন করবে print(f(input_here))? সুতরাং আমি আপনাকে দেখতে পাচ্ছি না কেন আপনাকে বাদ দিতে printএবং স্ট্রিংটি ফিরে যাওয়ার অনুমতি দেওয়া হবে না ।
কেভিন ক্রুইজসেন

7

আর , 120 , 111 110 107 বাইট

function(x,`!`=ncol,M=array('',Reduce(pmax,Map(dim,x)))){for(m in x)M[1:!t(m),1:!m]=m
write(t(M),1,!M,,'')}

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

অক্ষরের ম্যাট্রিক্সের একটি তালিকা গ্রহণ করে একটি ফাংশন (3 ডি ইনপুট গ্রহণ করা হয়)।

(আপনি যেমন বাইট গণনা থেকে লক্ষ্য করতে পারেন, আর তে এটি করা খুব সহজ নয় ...)

  • -9 বাইটস @ জিউজ্পে ধন্যবাদ
  • -4 বাইটস @ রবিনরাইডারকে ধন্যবাদ

4
আমি সত্যিই 200+ বাইট সমাধান আশা করছিলাম! যখনই এই প্রশ্নটি অনুগ্রহযোগ্য যোগ্য হয়ে উঠবে আমি এটিকে একটি দুর্দান্ত অনুদান দিচ্ছি
জিউসেপ

@ জিউস্পেপ: অন্যান্য ভাষার তুলনায় এখনও অনেক দীর্ঘ ... :(
ডিগএমআল

2
111 বাইটেরarray পরিবর্তে ব্যবহার matrix!
জিউসেপ

@ জিউসেপ: ঝরঝরে!
digEmAll সমস্ত

3
জন্য একটি উপন্যাস সহ 107ncol (আপনি পেতে ট্রান্সপোজ করতে পারেন nrow)।
রবিন রাইডার

5

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

n,f=None,filter
for l in map(n,*input()):print''.join(f(n,x)[-1]for x in map(n,*f(n,l)))

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


ব্যাখ্যা (উদাহরণ সহ):

ইনপুট হিসাবে একটি 2D তালিকা নেয়।

Input: [["12345","54321"],["00","00","00","00"],["001","011","012"]]

প্রতিটি ইনপুট আয়তক্ষেত্রের সারি পেতে প্রথমে ইনপুট তালিকাটি জিপ করা হয় ( map(None,l)একইভাবে একটি জিপ দীর্ঘতম):

map(n,*input())   gives:

('12345', '00', '001')
('54321', '00', '011')
(None, '00', '012')
(None, '00', None)

এরপরে প্রতিটি সারি মুছে ফেলা ফিল্টার করে Noneআবার জিপ করা হয়:

map(None,*filter(None,l))

filter(None,l) for each l gives:

('12345', '00', '001')
('54321', '00', '011')
('00', '012')
('00',)

map*... gives:

[('1', '0', '0'), ('2', '0', '0'), ('3', None, '1'), ('4', None, None), ('5', None, None)]
[('5', '0', '0'), ('4', '0', '1'), ('3', None, '1'), ('2', None, None), ('1', None, None)]
[('0', '0'), ('0', '1'), (None, '2')]
['0', '0']

যা পছন্দসই ফলাফলের প্রতিটি পদের জন্য অক্ষরের একটি তালিকা। এই তালিকাগুলি আবার ফিল্টার করা হয় এবং সর্বশেষটি নেওয়া হয়:

filter(None,x)   gives:

[('1', '0', '0'), ('2', '0', '0'), ('3', '1'), ('4',), ('5',)]
[('5', '0', '0'), ('4', '0', '1'), ('3', '1'), ('2',), ('1',)]
[('0', '0'), ('0', '1'), ('2',)]
['0', '0']

and with [-1]:

['0', '0', '1', '4', '5']
['0', '1', '1', '2', '1']
['0', '1', '2']
['0', '0']

শেষ পর্যন্ত ফলাফলগুলি যোগ হয়ে মুদ্রিত হয়:

print''.join(..)

00145
01121
012
00

আরআর "স্ট্রিংগুলির একটি তালিকা ফেরত দেয়", বিধিগুলিতে বলা হয়েছে "আউটপুট ফর্ম্যাটটি কঠোর You 88 বাইটের পুরো প্রোগ্রামটি যদিও ঠিক আছে
জোনাথন অ্যালান

@ জোনাথন অ্যালান, ওয়েলপ, আমি কঠোর আউটপুটটি ভুলভাবে পড়েছি (বা ভুলে গেছি
?:

5

আর, 107 97 বাইট

function(x)for(i in 1:max(lengths(x))){for(m in x)if(i<=length(m))cat(m[i],'\r',sep='');cat('
')}

টিআইও-তে কাজ করার জন্য উপস্থিত হয় না, যা এর ব্যবহারের সাথে সম্পর্কিত হতে পারে \r ক্যারেজ রিটার্ন চরিত্রের । এটি আমার আর এর স্থানীয় ইনস্টলেশন নিয়ে কাজ করে।

সারিগুলির ভেক্টরযুক্ত একটি তালিকা হিসাবে ইনপুট নেয়:

x <- list(c("aaaa","aaaa","aaaa","aaaa"),c("bb","bb","bb"),c("c"))

প্রতিটি আয়তক্ষেত্রের সারিগুলির উপরে লুপগুলি, প্রতিটিের পরে একটি ক্যারেজ রিটার্ন প্রিন্ট করে, লাইনটি পুনরায় চালু করে।

আমরা যদি নিয়মগুলি কিছুটা প্রসারিত করি তবে আমরা ইনপুটটির দৈর্ঘ্য পরীক্ষা করে এবং বিপুল পরিমাণে নিউলাইনগুলি মুদ্রণ করে অসীমভাবে লুপ করতে পারি:

আর, 85 বাইট

function(x)for(i in 1:8e8){for(m in x)if(i<=length(m))cat(m[i],'\r',sep='');cat('
')}

106 বাইট আপনি এখানে এবং সেখানে গল্ফ করছে দেখে ভাল লাগছে!
জিউসেপ

সম্ভবত 97 বাইট ; অস্পষ্ট যেহেতু এটি কাজ করে যেহেতু আমি কেবল টিআইও
জিউসেপে

@ জিউসেপ হাই! আপনার পরামর্শটি আমার পক্ষে কাজ করে। যদি আমাদের পেছনের নিউলাইনগুলি মুদ্রণের অনুমতি দেওয়া হয় তবে তার পরিবর্তে লুপের জন্য কেবল নির্বিচারে একটি বৃহত ব্যবহার করা সম্ভব হয় তবে আমার ধারণা এটি চ্যালেঞ্জের সীমাটি চাপিয়ে দিচ্ছে।
জেএডি

@ জাদ: দুর্দান্ত ধারণা ব্যবহার করে \r, এবং ফিরে স্বাগত! কেবল একটি নোট, আমি মনে করি এটি কেবল ইন্টারেক্টিভ আর সেশনগুলিতে কাজ করে (যখন interactive()সত্য ফিরে আসে)
digEmAll

@ DigEmAll এটি কমান্ডলাইনটি ব্যবহার করে আমার মেশিনে কাজ করে rscript। আমি সন্দেহ করি এটি একটি উইন্ডোজ / লিনাক্স বিষয়, যেহেতু উইন্ডোজ \r\nনিউলাইন এবং লিনাক্সের জন্য ব্যবহার করে \n
জেএডি

4

এপিএল (ডায়ালগ ইউনিকোড) , 22 বাইট এসবিসিএস

2D চরিত্রের অ্যারেগুলির যুক্তি হিসাবে তালিকাভুক্ত বেনামে tacit উপসর্গ ফাংশন। ছাপে।

(⊃{⍺@(⍳⍴⍺)⊢⍵}/)⌽,∘⊂1⌷↑

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

এটি একটি ক্যানভাস তৈরি করে কাজ করে, তারপরে ব্লকের তালিকায় এটি সংযোজন করে এবং কোণায় ব্লক স্থাপন করে এমন একটি ফাংশন সহ (ভাঁজ) হ্রাস করে।

 অर्थোগোনাল 3 ডি ব্লক তৈরি করতে 2 ডি ব্লকটি মিশ্রণ করুন, প্রয়োজনীয় স্থানগুলিতে এগুলি প্যাড করুন

1⌷ প্রথম স্তর নিন

 ঘিরা যে
 তারপর
⌽, ব্লক বিপরীত তালিকা পূর্বে লিখুন

() নিম্নলিখিত সূক্ষ্ম ফাংশন প্রয়োগ করুন:

{}/ নিম্নলিখিত বেনামে ল্যাম্বদা ব্যবহার কমাতে:

  ⊢⍵ ক্যানভাস হিসাবে সঠিক যুক্তি দিয়ে…

  ⍺@(... ) বাম যুক্তি, স্থাপন এর উপাদানের সঙ্গে সংশোধন নিম্নলিখিত সূচকের:

   ⍴⍺ বাম আর্গুমেন্ট আকার

    এই আকৃতির একটি অ্যারের ɩ n টি ডিভাইস

 প্রকাশ (কারণ হ্রাস র‌্যাঙ্ক কমাতে সংযুক্ত)


4

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

unlines.foldl((const?)?)[]
(g?(a:b))(c:d)=g a c:(g?b)d;(_?a)b=a++b

ইনপুট বিপরীত ক্রম স্ট্রিং তালিকার একটি তালিকা হিসাবে নেওয়া হয়, প্রথম টেস্টের ক্ষেত্রে জন্য উদাহরণ: [["c"],["bb","bb","bb"],["aaaa","aaaa","aaaa","aaaa"]]

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


3

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

পোর্ট অফ TFeld এর পাইথন সমাধান
2 বাইট ধন্যবাদ সংরক্ষিত ময়লা

ζεðKζðδK€θJ,

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

ব্যাখ্যা

ζ             # transpose input with space as filler
 ε            # apply to each
  ðK          # remove spaces
    ζ         # transpose with space as filler
     ðδK      # deep remove spaces
        €θ    # get the tail of each
          J   # join each
           ,  # print

বিকল্প 14 বাইট সংস্করণ

õζεÅ»DŠg.$J}θ,

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

ব্যাখ্যা

õζ              # zip with empty string as filler
  ε             # apply to each
   Å»      }    # cumulative reduce by
     D          # duplicate second input
      Š         # move down twice on stack
       g.$      # remove len(other_copy) elements from the other input
          J     # join with other copy
            θ,  # print the last element

1
ওহ, এটি মনে রাখা দরকার যে --no-lazyআবশ্যকতার জন্য প্রিন্ট সহ একটি মানচিত্র / ফিল্টারটি এখনও স্থির করে yতুলনা করে একটি বাইট সংরক্ষণ করতে হবে vy...,:) আমি জানতাম যে উত্তরাধিকার সংস্করণে কাজ করেছে তবে নতুন সংস্করণে এটি আউটপুটও দেবে [...]। অভাবের কারণে তা জানা ছিল না --no-lazy। ;) উত্তর হিসাবে নিজেই, খুব সুন্দর! আমি জানতাম যে ক্রমহ্রাসমান হ্রাস প্রয়োজনীয়, তবে আমি নিজে চেষ্টা করার পরে এটি সত্যিই কার্যকর করতে পারিনি। আপনি এটি এত সহজ
দেখায়

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

2
õζεõKহতে পারে ζεðK, õζõδKহতে পারে ζðδK
গ্রিমি

@ গ্রিমি: ওহ হ্যাঁ, স্পেসগুলি আর ইনপুটটিতে থাকতে পারে না। ধন্যবাদ!
এমিগানা



2

পাওয়ারশেল 6 , কেবলমাত্র 20 বাইট কনসোল

আরনাউল্ডের উত্তরের ভিত্তিতে । এটি কেবল কনসোল দিয়ে কাজ করে এবং টিআইওতে কাজ করে না।

cls
$args-join"`e[H"

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


পাওয়ারশেল , 103 বাইট

$args|%{$l=$_-split'
';$r=&{$r+($l|%{''})|%{($x=$l[$j++])+($_-replace"^.{0,$("$x"|% Le*)}")}|?{$_}}}
$r

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

Unrolled:

$args|%{
    $l=$_-split"`n"
    $r=&{                           # run this scriptblock in a new scope
        $r+($l|%{''})|%{
            $x=$l[$j++]             # a new line or $null
            $w="$x"|% Length
            $y=$_-replace"^.{0,$w}" # remove first chars from the current line
            $x+$y                   # output the new line plus tail of the overlapped line
        }|?{$_}                     # filter out not empty lines only
    }                               # close the scope and remove all variables created in the scope
}
$r


1

চুনি , 67 বাইট

ইনপুট লাইনগুলির একটি তালিকা। লাইনগুলির একটি তালিকা তৈরি করে এবং ইনপুটগুলির মধ্যে দিয়ে ওভাররাইটিং করে, তারপরে $/কঠোর আউটপুটটির সাথে মেলে শেষের দিকে একটি নতুন লাইনের সাথে (ভেরিয়েবল দ্বারা প্রতিনিধিত্ব করে ) তাদের সাথে যোগ দেয় ।

->i,*r{i.map{|e|j=-1;e.map{|l|r[j+=1]||='';r[j][0,l.size]=l}};r*$/}

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


1

সি (জিসিসি, মিনজিডাব্লু) 138 বাইট

ধরে নেওয়া যায় যে সিআর বর্তমান লাইনের শুরুতে কার্সারটি রাখে।

d,i,l;f(S,n,p,t)char**S,*p,*t;{for(d=i=0;i<n;d+=l)p=strchr(t=S[i],10),printf("\n%.*s\r"+!!i,l=p?p-t:strlen(t),t),S[i++]+=l+!!p;d&&f(S,n);}

এর সাথে পরীক্ষিত:

int main()
{
    char *test1[] = {"aaaa\naaaa\naaaa\naaaa","bb\nbb\nbb","c"};
    char *test2[] = {"12345\n54321","00\n00\n00\n00","001\n011\n012"};
    char *test3[] = {"sm\noo\nmr\nee\nt!\nh_\ni_\nn_\ng_","!@#$%^\n&*()_+\nqwerty\nuiopas","this\nis_a\ntest"};

    f(test1, 3);
    f(test2, 3);
    f(test3, 3);
}

1

অক্টাভা , 71 67 বাইট

function y=f(x)
for k=1:size(x)
y(1:(t=size(x{k})),1:t(2))=x{k};end

ফাংশন যা চর ম্যাট্রিক্সের একটি উল্লম্ব কক্ষ অ্যারে নেয় এবং একটি চর ম্যাট্রিক্স প্রদান করে।

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


1

জাভাস্ক্রিপ্ট (ব্রাউজার) , 216 208 204 বাইট

এই আমার প্রচেষ্টা। আমি আকারটি সম্পর্কে খুশি নই, অবশ্যই উন্নতির জন্য অবশ্যই আরও কিছু থাকতে হবে, তবে আমি গল্ফ করার ক্ষেত্রে অভিজ্ঞ নই।

var n='\n',x=s=>s.split``.reverse().join``,i,j,f=a=>a.map(s=>s.split(n).map(y=>x(y))).reduce((a,b)=>{for(i=0;i<b.length;i++){j=a[i];if(!j)j=b[i];a[i]=b[i].padStart(j.length,j)}return a}).map(s=>x(s)).join(n)

যাইহোক, এটি যা করে তা প্রথমে সমস্ত স্ট্রিং বিভক্ত হয়, তারপরে সমস্ত স্ট্রিংগুলি বিপরীত করে, তারপরে একটি হ্রাস অপারেশন প্যাডস্টার্টে লুপিংয়ের সময় সমস্ত স্ট্রিং একসাথে । তারপরে সমস্ত স্ট্রিংগুলিকে আবার বিপরীত করুন এবং তারপরে নতুন লাইনের সাথে আবার যুক্ত করুন।

লভিনের জন্য শেষ অংশটি শেষের দিকে এবং 8 বাইটের মোট বাইট সঞ্চয় হয় তা স্মরণ করিয়ে দেওয়ার জন্য কেভিন ক্রুইজসেনকে বিশেষ ধন্যবাদ ।

var n='\n',x=s=>s.split``.reverse().join``,i,j,f=a=>a.map(s=>s.split(n).map(y=>x(y))).reduce((a,b)=>{for(i=0;i<b.length;a[i]=b[i++].padStart(j.length,j))if(!(j=a[i]))j=b[i];return a}).map(s=>x(s)).join(n)

console.log(f(["aaaa\naaaa\naaaa\naaaa","bb\nbb\nbb","c"]));
console.log(f(["12345\n54321","00\n00\n00\n00","001\n011\n012"]));
console.log(f(["sm\noo\nmr\nee\nt!\nh_\ni_\nn_\ng_","!@#$%^\n&*()_+\nqwerty\nuiopas","this\nis_a\ntest"]));


1
উভয়ই ('')চার বাইট সংরক্ষণ করতে দু'জন হতে পারে :)
কেভিন ক্রুইজসেন

1
এছাড়াও, আপনি for(i=0;i<b.length;i++){j=a[i];if(!j)j=b[i];a[i]=b[i].padStart(j.length,j)}সাথে প্রতিস্থাপন করতে পারেন for(i=0;i<b.length;a[i]=b[i++].padStart(j.length,j))if(!(j=a[i]))j=b[i];
কেভিন ক্রুইজসেন

1
jপ্রথম নির্ধারিত হয় (j=a[i]), তারপর যদি-বিবৃতি দিয়ে সম্পন্ন করা হয় if(!...)j=b[i];(যেখানে ...হয় (j=a[i]), তাই আপডেট মান j, এবং তারপর) ;a[i]=b[i++].padStart(j.length,j))জন্য-লুপ পুনরাবৃত্তির শেষে সম্পন্ন করা হয় .. নিশ্চিত যেখানে সমস্যা, আর এটা কাজ বলে মনে হচ্ছে?
কেভিন ক্রুইজসেন

1
ওহোহহ .... * বড় চোখ * যা কিছু আনলক করেছে
কোনও তুষাল্লাকা

1
BTW, যদি আপনি তাদের এখনো দেখা যায়, এর মধ্যে golfing <সমস্ত ভাষা> জন্য টিপস এবং জাভাস্ক্রিপ্ট মধ্যে golfing জন্য টিপস উভয় আকর্ষণীয় মাধ্যমে পড়তে হতে পারে। :)
কেভিন ক্রুইজসেন

1

সি (জিসিসি) , 51 47 বাইট

f(char**s){for(;*s;printf("\e[s%s\e[u",*s++));}

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

-4 বাইট সিলিংক্যাট ধন্যবাদ।

কার্সার অবস্থানটি সংরক্ষণ / পুনরুদ্ধার করার জন্য সিএসআই সিকোয়েন্সগুলি ব্যবহার করে। পাস করা স্ট্রিং অ্যারে (কেবল একই বিন্যাসে argv) দিয়ে পুনরাবৃত্তি হয় এবং <save position>string<restore position>প্রতিটিটির জন্য মুদ্রণ করা হয়।

এটি কার্সারটিকে উপরের বামে রেখে দেয়, সুতরাং টার্মিনালে চলাকালীন পর্যাপ্ত নিউলাইনগুলি পরে রেখে দেওয়া গুরুত্বপূর্ণ যাতে প্রম্পটটি ইনপুটটি ক্লোবার না করে।


1

জাপট -P , 7 বাইট

মাল্টি-লাইন স্ট্রিংগুলির একটি অ্যারে হিসাবে ইনপুট নেয়, একটি একক মাল্টি-লাইন স্ট্রিং আউটপুট দেয়।

ú y_¸¬Ì

চেষ্টা করে দেখুন

ú y_¸¬Ì     :Implicit input of array
ú           :Right pad each line of each element with spaces to the length of the longest
  y         :Transpose
   _        :Map
    ¸       :  Split on spaces
     ¬      :  Join
      Ì     :  Last character
            :Implicitly join and output

1

টি-এসকিউএল কোয়েরি, 297 295 বাইট

বিভাজক হিসাবে ¶ এবং ইনপুট হিসাবে একটি টেবিল পরিবর্তনশীল Using

DECLARE @ table(a varchar(max),k int identity(1,1))
INSERT @ values('aaaa¶aaaa¶aaaa¶aaaa'),('bb¶bv¶bb'),('c');

WITH c as(SELECT k,row_number()over(partition
by k order by k)s,value v FROM @ CROSS APPLY
string_split(a,'¶')s),m(i,l,e)as(SELECT*FROM c
WHERE k=1UNION ALL
SELECT k,s,STUFF(e,1,len(v),v)FROM m
JOIN c ON-~i=k and s=l)SELECT
top 1with ties e FROM m
ORDER BY rank()over(partition by l order by-i)

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


1

জাভাস্ক্রিপ্ট (ব্রাউজার), 129 124 বাইট

কোড গল্ফিং এ আমার প্রথম প্রচেষ্টা। আমি বিধিগুলিতে প্রদত্ত লিঙ্কগুলি (ফাঁকা, মান নিয়ম ...) পড়েছি, তাই আমি আশা করি যে আমি কোনও ভুল করেছি!


ইনপুটগুলি তারা প্রথম পোস্টে (ফ্ল্যাট অ্যারে ফর্ম) হিসাবে রাখে।

_=o=>{o=o.map(i=>i.split`\n`),r=o.shift();for(a of o)for(l in a)b=a[l],r[l]=r[l]?b+r[l].slice(b.length):b;return r.join`\n`}

কেভিন ক্রুইজসেন 5 বাইট সংরক্ষণ করার জন্য ধন্যবাদ ।


পরীক্ষা:


1
পিপিসিজিতে আপনাকে স্বাগতম! ভাল উত্তর, আমার কাছ থেকে +1। for(a of o){for(l in a){b=a[l],r[l]=(r[l])?b+r[l].slice(b.length):b}}for(a of o)for(l in a)b=a[l],r[l]=r[l]?b+r[l].slice(b.length):b;
গল্ফকে

1
@ কেভিন ক্রুজসেন - ধন্যবাদ, আমি আমার পোস্ট আপডেট করেছি! আমি পোস্ট করার আগে এই দুটি গাইড পড়েছিলাম, তারা উভয়ই কার্যকর ছিল। তবে আমি সম্ভবত এমন কিছু কৌশল মিস করছি যা আমার প্রয়াসকে আরও উন্নত করতে পারে!
কেভিন বিবিলেট

1
আমার প্রথম মন্তব্যটি আপনি মিস করেছেন তার অন্য একটি জিনিস =(r[l])?=r[l]?
হ'ল

1
@ কেভিনবিবলেট, এর চূড়ান্ত ফলাফলটি ফেরত দেওয়ার জন্য এটি প্রয়োজন r। এটি না করে ম্যাপিংয়ের ফলাফল পরিবর্তে ফিরে আসবে।
শেগি

1
আপনি যদি পরীক্ষার ক্ষেত্রে ব্যবহৃত I / O ফর্ম্যাটটি ধরে রাখতে চান তবে আপনি এখনও 85 বাইটে নামতে পারেন তবে আপনার মনে রাখা উচিত যে I / O নমনীয়।
শেগি

1

পাইথ , 18 বাইট

L.tb0VyQsme #dy #N

এটি অনলাইন চেষ্টা করুন! (দ্রষ্টব্য: কোড নিজেই কেবল একটি ব্লককে মূল্যায়ন করে, দোভাষীর পরীক্ষার স্যুট মোড প্রতিটি ইনপুট প্রতিটি লাইনের জন্য একবার প্রোগ্রাম চালায়)

টিফেল্ডের পাইথন 2 সমাধানের ভিত্তিতে ।

ব্যাখ্যা:

L.tb0         # define a lambda function called y which does a transpose, padding with integer 0's
VyQ           # loop over transposed first input line (Q = eval(input()) ) (loop index = N)
   s          # concatenate array of strings (implicitly printed)
    m         # map over
         y #N # transpose of non-falsy values of N
     e        # for each item: last element of array
       #d     # relevant space at the start! filter with identity function, removes falsy values

কেন নিজেই অ্যালগরিদম কাজ করে তার ব্যাখ্যার জন্য, টিফিল্ডের উত্তর দেখুন।


0

কাঠকয়লা , 4 বাইট

FθPι

এটি অনলাইনে চেষ্টা করুন (ভার্বোজ) অথবা এটি অনলাইনে চেষ্টা করুন (খাঁটি)

ব্যাখ্যা:

মাল্টি-লাইন স্ট্রিংগুলির ইনপুট-তালিকাটির উপরে লুপ করুন:

For(q)
Fθ

এবং কার্সারটি সরানো ছাড়াই বহু-লাইন স্ট্রিংটি মুদ্রণ করুন:

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