উল্লম্বভাবে পাঠ্য সঙ্কুচিত করুন


85

বলুন আমার কাছে এই জাতীয় পাঠ্য রয়েছে (প্রতিটি শব্দ এক লাইনে, কোনও ফাঁকা জায়গা নেই)

Programming
Puzzles
&
Code
Golf

ওটা কোন অর্থ প্রকাশ করে না! এটি পদার্থবিজ্ঞানের আইনকে পুরোপুরি অস্বীকার করে।

আপনার চ্যালেঞ্জ হ'ল এই অসম্ভব পরিস্থিতিটির প্রতিকার করা এবং পাঠ্যটিকে এভাবেই ভেঙে দেওয়া:

P
Prog
&uzz
Coderam
Golflesming

যাতে কোনও অক্ষরের নীচে খালি জায়গা না থাকে তবে অক্ষরগুলি তাদের উল্লম্ব ক্রম বজায় রাখে।

লক্ষ্যটি প্রয়োজনীয়তাগুলি পূরণ করা তবে সম্ভাব্য সোর্স কোডের কয়েকটি বাইট ব্যবহার করা use


12
এছাড়াও, এটি কি প্রতি লাইন এক শব্দ হবে, বা স্পেস থাকতে পারে? যদি ফাঁকা জায়গা থাকে তবে সেগুলি কি ধসে পড়তে হবে, বা স্পেসগুলি ওজন বহন করতে পারে?
গ্লেন ও

53
"পি প্রোগ & ইউজেড কোডরাম গল্ফস্মিং", সাইটের শিরোনামের জন্য নতুন প্রার্থী আছে বলে মনে হচ্ছে ..
jcai

1
কেউ মার্বেলাস ব্যবহার করতে যাচ্ছেন ( github.com/marbelous-lang/marbelous.py )?
চার্লি

1
আমি পদার্থবিজ্ঞানের ইঞ্জিন ব্যবহার করার সিদ্ধান্ত নিয়েছি এবং 0 বাইট
l4m2

2
আউটপুটে পিছনে স্থান থাকতে পারে?
এরিক আউটগল্ফার

উত্তর:


57

পাইথ, 10 বাইট

jb_.T.T_.z

পাইথ কম্পাইলার / এক্সিকিউটারে অনলাইনে চেষ্টা করে দেখুন ।

ধারণা

চারটি সাধারণ ট্রান্সফরমেশন প্রয়োগ করে আমরা কাঙ্ক্ষিত আউটপুট অর্জন করতে পারি:

  1. রেখার ক্রমটি বিপরীত করুন:

    Golf
    Code
    &
    Puzzles
    Programming
    
  2. সারি এবং কলাম স্থানান্তর করুন:

    GC&PP
    oour
    ldzo
    fezg
    lr
    ea
    sm
    m
    i
    n
    g
    

    এই শীর্ষটি মূল কলামগুলিকে ভেঙে ফেলাচ্ছে tif

  3. সারি এবং কলাম স্থানান্তর করুন:

    Golflesming
    Coderam
    &uzz
    Prog
    P
    
  4. রেখার ক্রমটি বিপরীত করুন:

    P
    Prog
    &uzz
    Coderam
    Golflesming
    

কোড

        .z  Read the input as a list of strings, delimited by linefeeds.
       _    Reverse the list.
   .T.T     Transpose the list twice.
  _         Reverse the list.
jb          Join its strings; separate with linefeeds.

1
গ্রার, ঠিক এই পোস্ট করছিল :)। পরিবর্তে একটি upvote আছে।
মাল্টেসেন

আমারও অনুরূপ কিছু পোস্ট করার পরিকল্পনা ছিল ... খুব
উত্সাহ দেওয়া

অর্ডারটি উল্টানোর আগে আপনি যদি সারি এবং কলামগুলি স্থানান্তর করেন তবে কি হবে?
জন ওডম

1
@ জনঅডম কেবল দু'বার স্থানান্তর করা অক্ষরগুলি নীচে সরানোর পরিবর্তে শীর্ষে স্থানান্তরিত করবে। আপনি স্থানান্তর করে শুরু করতে পারেন, ততক্ষণে আপনাকে প্রতিটি সারি বিপরীত করতে হবে, যা এক বাইট দীর্ঘ হবে।
ডেনিস

হোলি ফক্সপ্রো, এটি ছিল চালাক।
ওয়ার্কওভারফ্লো

38

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

import Data.List
p=reverse;o=transpose
f=unlines.p.o.o.p.lines

আমি খুব পরিণত।


20
+1 কারণ আমি খুব কমই হাস্কেল এবং পুপিং লাইনগুলির জন্য দেখতে পাই।
কারসিজেনিকেট

17

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

l=[]
for x in input().split('\n'):n=len(x);l=[a[:n]+b[n:]for a,b in zip(l+[x],['']+l)]
print'\n'.join(l)

একটি পুনরাবৃত্ত ওয়ান-পাস অ্যালগরিদম। আমরা প্রতিটি লাইনের মধ্য দিয়ে যাই, lআউটপুটটিতে লাইনের তালিকা আপডেট করে ating নতুন শব্দটি কার্যকরভাবে নীচে থেকে ধাক্কা দেয়, তার উপরে সমস্ত অক্ষর এক জায়গায় স্থানান্তর করে। উদাহরণস্বরূপ, পরীক্ষার ক্ষেত্রে

Programming
Puzzles
&
Code
Golf

আমরা কাজ শেষ করার পরে Code, আমাদের আছে

P
Prog
&uzzram
Codelesming

এবং তারপরে Golfফলাফল যুক্ত করুন

P
Prog
&uzz
Coderam
Golflesming

যা আমরা দুটি টুকরোয়ের সংমিশ্রণ হিসাবে দেখতে পারি

P     |
Prog  |
&uzz  |
Code  | ram
Golf  | lesming

যেখানে প্রথম টুকরাটি স্থানান্তরিত হয়েছিল golf। আমরা zipশেষ (বাম পাশ) এ এলিমেন্ট এবং আউটপুট তালিকার অগ্রাধিকার একটি ফাঁকা রেখা (ডান পাশ) দিয়ে নতুন উপাদানটির দৈর্ঘ্যে প্রতিটি অংশ কেটে দিয়ে এই আউটপুট তালিকার একটি দিয়ে এই স্থানান্তরটি সম্পাদন করি ।

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

তুলনার জন্য, এখানে (109 বাইট) ব্যবহারের সাথে একটি zip/ filterপদ্ধতির উপায় রয়েছে :map(None,*x)iziplongest

f=lambda z:[''.join(filter(None,x))for x in map(None,*z)]
lambda x:'\n'.join(f(f(x.split('\n')[::-1]))[::-1])

12

সিজেম, 11 বাইট

qN/W%zzW%N*

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

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

আমার পাইথ উত্তরের মতই ধারণাটি ।

q           e# Read from STDIN.
 N/         e# Split at linefeeds.
   W%       e# Reverse the resulting array.
     zz     e# Transpose it twice.
       W%   e# Reverse the resulting array.
         N* e# Join its strings; separate with linefeeds.

7

জাভাস্ক্রিপ্ট (ES6), 146

(টেম্পলেট স্ট্রিংগুলির মধ্যে দুটি নতুনলাইনগুলি উল্লেখযোগ্য এবং গণনা করা হয়)

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

a=>(S=z=>{for(t=[];z.join``;t.push(w))for(w='',n=z.length;n--;z[n]=z[n].slice(1))w+=z[n][0]||''},S(a.split`
`),S(t.reverse()),t.reverse().join`
`)

স্নিপেটের মধ্যে কম গল্ফেড (ফায়ারফক্সে চেষ্টা করুন)

F=a=>(
  S=z=>{
    for(t=[];z.join``;t.push(w))
      for(w='',n=z.length;n--;z[n]=z[n].slice(1))
        w+=z[n][0]||''
  },
  S(a.split`\n`),
  S(t.reverse()),
  t.reverse().join`\n`
)
#I,#O { margin:0; width: 200px; height:100px; border: 1px solid #ccc }
<table><tr><td>
Input<br><textarea id=I>Programming
Puzzles
&
Code
Golf
</textarea></td><td>
Output<pre id=O></pre>
</td></tr></table>  
<button onclick='O.innerHTML=F(I.value)'>go</button>


প্রতিস্থাপন কয়েক বাইট কমাতে S(t.reverse()),t.reverse().joinসঙ্গে S(R=t.reverse()),R.join
ইসমাইল মিগুয়েল

@ ইসমাইলমিগুয়েল নং, এস টি পরিবর্তন করে তাই এস এর পরে টি টি এস এর আগে
টির

5

আর, 223 বাইট

function(x){a=apply(do.call(rbind,lapply(p<-strsplit(strsplit(x,"\n")[[1]],""),function(x)c(x,rep(" ",max(lengths(p))-length(x))))),2,function(x)c(x[x==" "],x[x!=" "]));for(i in 1:nrow(a))cat(a[i,][a[i,]!=" "],"\n",sep="")}

এটি এটি করার একটি অযৌক্তিক দীর্ঘ, নির্বোধ উপায়।

Ungolfed:

f <- function(x) {
    # Start by spliting the input into a vector on newlines
    s <- strsplit(x, "\n")[[1]]

    # Create a list consisting of each element of the vector
    # split into a vector of single characters
    p <- strsplit(s, "")

    # Pad each vector in p to the same length with spaces
    p <- lapply(p, function(x) c(x, rep(" ", max(lengths(p)) - length(x))))

    # Now that the list has nice dimensions, turn it into a matrix
    d <- do.call(rbind, p)

    # Move the spaces to the top in each column of d
    a <- apply(d, 2, function(x) c(x[x == " "], x[x != " "]))

    # Print each row, omitting trailing whitespace
    for (i in 1:nrow(a)) {
        cat(a[i, ][a[i, ] != " "], "\n", sep = "")
    }
}

আপনি এটি অনলাইনে চেষ্টা করতে পারেন ।


5

মতলব / অক্টাভা, 99 বাইট

function f(s)
c=char(strsplit(s,[10 '']));[~,i]=sort(c>32);[m,n]=size(c);c(i+repmat((0:n-1)*m,m,1))

উদাহরণ :

একটি ভেরিয়েবল ইনপুট স্ট্রিং সংজ্ঞায়িত করুন, বলুন s10লাইন ফিড অক্ষর:

>> s = ['Programming' 10 'Puzzles' 10 '&' 10 'Code' 10 'Golf'];

fইনপুট সহ কল ফাংশন s:

>> f(s)
ans =
P          
Prog       
&uzz       
Coderam    
Golflesming

অথবা এটি অনলাইনে চেষ্টা করে দেখুন ( অনলাইন অকটাভ দোভাষী সাথে সহায়তার জন্য @ বেকারকে ধন্যবাদ )


4

জাভাস্ক্রিপ্ট ES6, 119 বাইট

F=s=>(C=o=>--a.length?C(a.reduce((p,c,i)=>c+p.slice((a[i-1]=p.slice(0,c.length)).length)))+`
`+o:o)(a=(s+`
`).split`
`)

এখানে এটি নিখরচায় এবং ES5 তে মন্তব্যগুলি এটি কীভাবে কাজ করে তা ব্যাখ্যা করে:

function F(s) {
  var arr = (s+'\n').split('\n'); // Create an array of words and append an empty member
  return (function C(output) {
    return --arr.length ? // Remove the last item from the array
      C(arr.reduce(function(p,c,i) { // If the array still has length reduce it to a string and recurse
        var intersection = (arr[i-1] = p.slice(0, c.length)) // Overwrite the previous word with the part that intersects the current word
        return c + p.slice(intersection.length) // Add the part of the previous word that doesn't intersect to the current value
      })) + '\n' + output : output // Add the last level of recursions output on to the end of this
  })(arr);
}

input.addEventListener('input', updateOutput, false);

function updateOutput() {
  var oldLength = input.value.length;
  var start = this.selectionStart;
  var end = this.selectionEnd;
  input.value = input.value.split(/ +/).join('\n');
  var newLength = input.value.length;
  input.setSelectionRange(start, end + (newLength - oldLength));
  output.value = F(input.value).trim();
}

updateOutput();
textarea {
  width: 50%;
  box-sizing: border-box;
  resize: none;
  float: left;
  height: 10em;
}

label {
  width: 50%;
  float: left;
}
<p>Type in the input box below, spaces are automatically converted to newlines and the output updates as you type</p>
<label for="input">Input</label>
<label for="output">Output</label>
<textarea id="input">
Type inside me :)
</textarea>
<textarea id="output" disabled>
</textarea>


4

এপিএল (ডায়ালগ প্রসারিত) , 13 11 বাইট এসবিসিএস

ডায়ালগ এপিএলে আমার এক্সটেনশন সহ -2।

বেনামে ট্যাসিট ফাংশন, একটি অক্ষর ম্যাট্রিক্স গ্রহণ এবং ফিরে returning

~∘' '1⍢⍉⍢⊖

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

~ অপসারণ  স্পেস  থেকে  সারি (শয়নকামরা 1D উপ-অ্যারে)  যখন  পক্ষান্তরিত  যখন  ফ্লিপ

' '

1




অপেক্ষা করুন এই 33 বাইট কেমন?
কনর ও'ব্রায়েন

3

আর, 190 178 175 বাইট

সম্ভবত এখনও এটিতে গল্ফ করার জন্য কিছু জায়গা রয়েছে। সম্ভবত সেখানে অপ্রয়োজনীয় অপারেশনগুলির একটি দম্পতি

l=lapply;s=substring;C=rbind;d=do.call;cat(C(d(C,l(apply(d(C,l(a<-scan(,''),s,1:(w=max(nchar(a))),1:w))[(h=length(a)):1,],2,paste0,collapse=''),s,1:h,1:h))[,h:1],'\n'),sep='')

অবহেলিত এবং ব্যাখ্যা

a<-scan(,'')    # get STDIN
h<-length(a)    # number of lines
w=max(nchar(a)) # length of longest line
M<-lapply(a,substring,1:w,1:w)   # create a list of split strings with empty chars
M<-do.call(rbind,M)[h:1,]        # turn it into a matrix with line order reversed
M<-apply(M,1,paste0,collapse='') # paste together the columns
M<-lapply(M,substring,1:h,1:h)   # split them back up
M<-do.call(rbind,M)[,h:1]        # reform a matrix
M<-rbind(M,'\n')                 # add some carriage returns
cat(M,sep='')   # output with seperators

টেস্ট রান। এটি লক্ষণীয় আকর্ষণীয় যে স্ক্যানটি যেভাবে কাজ করে তার কারণে পুরো বাক্যটি ফাঁকা জায়গায় ইনপুট হতে পারে এবং এখনও নির্দিষ্ট হিসাবে আউটপুট দিতে পারে।

> l=lapply;s=substring;C=rbind;d=do.call;cat(C(d(C,l(apply(d(C,l(a<-scan(,''),s,1:(w=max(nchar(a))),1:w))[(h=length(a)):1,],2,paste0,collapse=''),s,1:h,1:h))[,h:1],'\n'),sep='')
1: Programming
2: Puzzles
3: &
4:     Code
5: Golf
6: 
Read 5 items
P
Prog
&uzz
Coderam
Golflesming
> l=lapply;s=substring;C=rbind;d=do.call;cat(C(d(C,l(apply(d(C,l(a<-scan(,''),s,1:(w=max(nchar(a))),1:w))[(h=length(a)):1,],2,paste0,collapse=''),s,1:h,1:h))[,h:1],'\n'),sep='')
1: Programming Puzzles & Code Golf beta
7: 
Read 6 items
P
Prog
&uzz
Code
Golfram
betalesming
>   

3

স্টাটা, 323 বাইট

Ab নামক কোনও ফাইলে ইনপুট নেয় এখন কেবল 24 টি অক্ষরের জন্য কাজ করে। আরও কাজ করে এটি তৈরি করতে পরে আপডেট হবে। এছাড়াও, অনলাইন সংকলকটিতে কাজ করে না। অবিহীন সংকলক প্রয়োজন।

gl l=24/
forv x=1/$l{
gl a="$a str a`x' `x'"
}
infix $a using a.b
gl b=_N
forv k=1/$l{
gen b`k'=0
qui forv i=$b(-1)1{
forv j=`i'/$b{
replace b`k'=1 if _n==`j'&a`k'==""
replace a`k'=a`k'[_n-1] if _n==`j'&a`k'==""
replace a`k'="" if _n==`j'-1&b`k'[_n+1]==1
replace b`k'=0
}
}
}
forv i=1/$b{
forv k=1/$l{
di a`k'[`i'] _c
}
di
}

সম্পাদনা করুন: নিঃশব্দে (আউটপুট দমন করতে) লুপের প্রতিটি বিবৃতি থেকে 8 টি বাইট সংরক্ষণ করে লুপটিতে সরানো হয়েছে।


আপনার জমাটি কেন অবৈধ হবে, কেবলমাত্র এটির জন্য একটি নিরবিহীন সংকলক প্রয়োজন?
ডেনিস

@ ডেনিস আমি ভেবেছিলাম যে মেটাতে সিদ্ধান্ত নেওয়া হয়েছিল যে প্রোগ্রামিং ভাষা অবশ্যই কিছু মুক্ত পরিবেশে চালানো যায়। এছাড়াও, ইনপুট দৈর্ঘ্যের উপর বিধিনিষেধগুলি এটিকে অবৈধ করতে পারে।
25:25

1
চরিত্রের সীমাবদ্ধতা একটি সমস্যা হবে তবে আমি কোনও মেটা sensকমত্য সম্পর্কে অবগত নই যার জন্য একটি বিনামূল্যে বাস্তবায়ন প্রয়োজন। (আপনি যদি হ্যালো ওয়ার্ল্ড কুইজ থেকে এই ধারণাটি পেয়ে থাকেন তবে সেই প্রশ্নটি স্পষ্টভাবে বিনামূল্যে ভাষাগুলির জন্য জিজ্ঞাসা করেছিল))
ডেনিস

@ ডেনিস আমি বুঝতে পেরেছিলাম যে এটি একটি sensকমত্য
মন্তব্যগুলি

উত্তরটি অচিরাচরিত পোস্টগুলিকে হ্রাস করার পরামর্শ দেয়, যার পক্ষে সত্যিই sensক্যমতের প্রয়োজন হয় না এবং বাস্তবে তা ঘটে না। আসলে ম্যাথমেটিকা ​​এবং টিআই-বেসিক উত্তরগুলি সাধারণত বেশ জনপ্রিয়।
ডেনিস

2

আর, 171 বাইট

S=scan(,"");while(any((D<-diff(N<-sapply(S,nchar)))<0)){n=max(which(D<0));S[n+1]=paste0(S[n+1],substr(S[n],N[n]+D[n]+1,N[n]));S[n]=substr(S[n],1,N[n]+D[n])};cat(S,sep="\n")

নিউলাইন এবং ইন্ডেন্টেশন সহ:

S=scan(,"") #Takes input from stdin
while(any((D<-diff(N<-sapply(S,nchar)))<0)){
    n=max(which(D<0))
    S[n+1]=paste0(S[n+1],substr(S[n],N[n]+D[n]+1,N[n]))
    S[n]=substr(S[n],1,N[n]+D[n])
}
cat(S,sep="\n")

ব্যবহার:

> S=scan(,"");while(any((D<-diff(N<-sapply(S,nchar)))<0)){n=max(which(D<0));S[n+1]=paste0(S[n+1],substr(S[n],N[n]+D[n]+1,N[n]));S[n]=substr(S[n],1,N[n]+D[n])};cat(S,sep="\n")
1: Programming
2: Puzzles
3: &
4: Code
5: Golf
6: 
Read 5 items
P
Prog
&uzz
Coderam
Golflesming

2

জেলি , 6 বাইট (প্রতিদ্বন্দ্বী)

ỴṚZZṚY

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

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

আমার পাইথ উত্তরের মতই ধারণাটি ।

ỴṚZZṚY  Main link. Argument: s (string)

Ỵ       Split at linefeeds.
 Ṛ      Reverse the order of the lines.
  ZZ    Zip/transpose twice.
    Ṛ   Reverse the order of the lines.
     Y  Join, separating by linefeeds.

2

টার্টলিড , 72 বাইট, নন-কেপটিং

মোটামুটি নিশ্চিত যে আমি বাইটগুলি সংরক্ষণ করার জন্য পদ্ধতির পরিবর্তন করতে পারি, তবে পরে।

: p নন-গল্ফ এছল্যাং নিয়মিত ল্যাংগুলি প্রহার করে: পি

টার্টল্ড সম্পর্কে অদ্ভুত বিষয়টি এটি মূলত আসকি আর্ট ল্যাংগুলি নিয়ে আলোচনার পরে তৈরি করা হয়েছিল তবে এই ধরণের চ্যালেঞ্জগুলিতে এটি সর্বোত্তম বলে মনে হয় it

টার্টল্ড নতুন লাইন ইনপুট নিতে পারে না তবে একাধিক ইনপুট গ্রহণ করতে পারে এবং এটিতে কেবল একটি ইনপুট লাগে: প্রতিটি শব্দকে একটি স্পেস দিয়ে শেষ করে, সমাপ্ত করে।

!l[*,+r_][ l]ur[*,[ -.]+.[ r{ d}u+.]-.[ -.]{ l}[ l]r[ u]_]' d[ d]u[ ' r]

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

ব্যাখ্যা:

!                          Take string input
 l                         Move left, off the asterisk at the start of grid
  [*    ]                  Until cell is *
    ,+r_       write *, string pointer+=1, move right, write * if pointed char is last char
         [ l]ur    move left until finding a space, move up and right
               [*                                        ]     Until cell is *
                 ,                               write *
                  [   ]             until cell is [space]
                    -.               decrement string pointer, write pointed char
                       +.           increment and write string pointer
                         [         ] until cell is [space]
                           r{ d}     move right, move down until finding nonspace
                                u+.  move up, string pointer+=1 and write pointed char
                                    -.      decrement string pointer and write pointed char
                                      [   ]  until cell is [space]
                                        -.  string pointer-=1 and write pointed char
                                           { l}   move left until finding nonspace
                                               [ l]   move left until finding space
                                                   r   move right
                                                    [ u]  move up until finding space
                                                        _  write * if pointed char is last char
                                                          (if it is written, loop ends)

                                                          ' d[ d]u[ ' r] just cleanup

2

পার্ল, 133 বাইট

এটি ছিল এমন চ্যালেঞ্জগুলির মধ্যে একটি যা আমার মাথায় খুব শক্ত হওয়া থেকে সহজ হওয়া থেকে, আমার প্রত্যাশার চেয়ে অনেক বেশি কোড হওয়ার পরিবর্তিত হয়েছিল ... আমি এই পদ্ধতির সাথে বিশেষভাবে খুশি নই, আমি নিশ্চিত যে এর একটি আছে print pop@F...বিট কমানোর আরও ভাল উপায় সম্ভবত ব্যবহার করতে -nবা খাঁটি রেজিক্স ব্যবহার করা , তবে আমি এখনই সেখানে পৌঁছাতে পারছি না ... মূলত আমি ব্যবহার sayকরছিলাম তবে আমার মনে হয় যে এর use 5.01কারণে আমাকে আরও উচ্চতর ( ) স্কোর করতে হবে $'

@F=(/.+/g,@F)for<>;$_%=$#F,($x=length$F[$_++])<length$F[$_]&&($F[$_]=~/.{$x}/,$F[$_-1].=$',$F[$_]=$&)for 0..1e2;print pop@F,$/while@F

ব্যবহার

হিসাবে সংরক্ষণ করুন vertically-collapse-text.pl

perl vertically-collapse-text.pl <<< 'Programming
Puzzles
&
Code
Golf'
P
Prog
&uzz
Coderam
Golflesming

2

স্মাইলব্যাসিক, 90 বাইট

X=RND(50)Y=RND(20)G=CHKCHR(X,Y+1)<33LOCATE X,Y+G?CHR$(CHKCHR(X,Y));
LOCATE X,Y?" "*G
EXEC.

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


1

রুবি, 99 82 বাইট

সেখানে পৌঁছে ...

f=->a,i=-1{a.map{|l|i+=1;(0...l.size).map{|c|a.map{|x|x[c]}.join[~i]}*''}.reverse}

একটি চেষ্টা করার ব্যাখ্যা:

f=->a,i=-1{a.map{|l|i+=1; # For each line `l` with index `i` in string array `a`
(0...l.size).map{|c|        # For each column `c` in `l`
a.map{|x|x[c]}.join           # Make a string of non-nil characters `c` across `a`...
[~i]                          # ...and grap the `i`th character *from the end*, if any
}*''}.reverse}              # Join the characters grabbed from each column and reverse the result

এটি এইভাবে চালান:

a = %w[
  Programming
  Puzzles
  &
  Code
  Golf
]
puts f[a]

1

কে, 30

{+{(-#x)$x@&~^x}'+x@\:!|/#:'x}

k){+{(-#x)$x@&~^x}'+x@\:!|/#:'x}("Programming";"Puzzles";,"&";"Code";"Golf")
"P          "
"Prog       "
"&uzz       "
"Coderam    "
"Golflesming"

ব্যাখ্যা

x@\:!|/#:'x বর্গাকার চর ম্যাট্রিক্স তৈরি করতে প্রতিটি স্ট্রিং প্রসারিত।

k){x@\:!|/#:'x}("Programming";"Puzzles";,"&";"Code";"Golf")
"Programming"
"Puzzles    "
"&          "
"Code       "
"Golf       "

+ এটি স্থানান্তরিত

k){+x@\:!|/#:'x}("Programming";"Puzzles";,"&";"Code";"Golf")
"PP&CG"
"ru oo"
"oz dl"
"gz ef"
"rl   "
"ae   "
"ms   "
"m    "
"i    "
"n    "
"g    "

{(-#x)$x@&~^x} কোনও স্ট্রিং থেকে যে কোনও স্পেস সরিয়ে ফেলবে এবং তারপরে স্ট্রিংটির মূল দৈর্ঘ্য দ্বারা প্যাড করবে

k){(-#x)$x@&~^x}"a  b  c   de  f"
"         abcdef"

প্রতিস্থাপনের প্রতিটি স্ট্রিংয়ে সেই ফাংশনটি প্রয়োগ করুন, তারপরে ফলাফল পেতে আউটপুটটি ফ্লিপ করুন

k){+{(-#x)$x@&~^x}'+x@\:!|/#:'x}("Programming";"Puzzles";,"&";"Code";"Golf")
"P          "
"Prog       "
"&uzz       "
"Coderam    "
"Golflesming"

{+{(-#x)$x@&~^x}'+(|/#:'x)$x}29.
স্ট্রিস্টার

1

পিবি - 310 বাইট

^w[B!0]{w[B=32]{vb[1]^b[0]}>}b[1]vb[1]>b[2]<[X]w[B!2]{t[T+B]b[0]>}b[0]v[T]w[X!-1]{b[1]<}b[1]vb[1]w[B!0]{w[B!0]{^w[B!0]{>}<<<<^[Y+1]w[B!0]{<}>t[B]b[0]w[B!1]{v}v<[X]w[B!0]{>}b[T]}b[0]vb[1]^w[X!0]{<vb[1]^t[B]b[0]^w[B!0]{^}b[T]w[B!0]{v}}vw[B!0]{^^w[B!0]{>}<b[0]vvw[B=0]{<}b[0]<[X]}^^>w[B=0]{vb[1]}v<<}>>^b[0]^<b[0]

কি দুর্যোগ. এটি কীভাবে কাজ করে সে সম্পর্কে আমি সবেমাত্র কিছু মনে করি।

যেভাবে পিবির ইনপুট কাজ করে (একসাথে একক লাইন) কাজ করার কারণে আপনাকে ইনপুটটিতে নতুন লাইনের পরিবর্তে স্পেস ব্যবহার করতে হবে। দোভাষী যদি আবর্জনা না হয়ে থাকেন এবং আপনি ইনপুটে নতুন লাইনগুলি অন্তর্ভুক্ত করতে পারেন [B=32]তবে শুরুতে কেবল একমাত্র পরিবর্তনটি হবে [B=10]

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


1

জে, 17 বাইট

-.&' '"1&.(|:@|.)

বেশ মনোরম সমাধান।

ব্যাখ্যা:

-.&' '"1&.(|:@|.)  input: list of strings y
              |.   reverse lines
           |:@     then transpose
-.&' '"1           remove blanks from columns
        &.         and undo the inside
           |:@|.   (that is, transpose and reverse again.)

পরীক্ষার মামলার ব্যাখ্যা দেওয়া হয়েছে

   s
Programming
Puzzles
&
Code
Golf
   |.s
Golf
Code
&
Puzzles
Programming
   |:|.s
GC&PP
oo ur
ld zo
fe zg
   lr
   ea
   sm
    m
    i
    n
    g
   -.&' '"1|:|.s
GC&PP
oour
ldzo
fezg
lr
ea
sm
m
i
n
g
   |.-.&' '"1|:|.s
g
n
i
m
sm
ea
lr
fezg
ldzo
oour
GC&PP
   |.|:-.&' '"1|:|.s
P
Prog
&uzz
Coderam
Golflesming
   (-.&' '"1)&.(|:@|.)s
P
Prog
&uzz
Coderam
Golflesming
   -.&' '"1&.(|:@|.)s
P
Prog
&uzz
Coderam
Golflesming

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

   f =: -.&' '"1&.(|:@|.)
   f
-.&' '"1&.(|:@|.)
   f >'Programming';'Puzzles';'&';'Code';'Golf'
P
Prog
&uzz
Coderam
Golflesming
   g =: [: > [: <;._1 '|'&,
   g 'Programming|Puzzles|&|Code|Golf'
Programming
Puzzles
&
Code
Golf
   f g 'Programming|Puzzles|&|Code|Golf'
P
Prog
&uzz
Coderam
Golflesming
   F =: f @ g
   F &. > 'Programming|Puzzles|&|Code|Golf' ; '1|23|456|7890' ; '1234|567|89|0'
+-----------+----+----+
|P          |1   |1   |
|Prog       |23  |52  |
|&uzz       |456 |863 |
|Coderam    |7890|0974|
|Golflesming|    |    |
+-----------+----+----+

;@;:&.(|:@|.)13 এর জন্য
ফ্রাউনফ্রোগ

1

আসলে , 13 বাইট

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

R2`;i(lZ♂Σ`nR

Ungolfing

          Implicit input s.
R         Reverse s.
2`...`n   Run the following function twice.
  ;i        Duplicate and flatten onto the stack.
  (l        Get the number of strings in the list.
  Z         Zip len strings together, which results in a list of lists of characters.
  ♂Σ        Sum each list of characters, which essentially joins them together.
           This function essentially transposes
R         Reverse the result.
          Implicit return.

1

র‌্যাকেট 312 বাইট

(let((lr list-ref)(ls list-set)(sl string-length)(ss substring)(l(string-split s)))(let p((ch #f))
(for((i(-(length l)1)))(define s(lr l i))(define r(lr l(+ 1 i)))(define n(sl s))(define m(sl r))
(when(> n m)(set! l(ls l i(ss s 0 m)))(set! l(ls l(+ 1 i)(string-append r(ss s m n))))(set! ch #t)))(if ch(p #f)l)))

Ungolfed:

(define (f s)
  (let ((lr list-ref)
        (ls list-set)
        (sl string-length)
        (ss substring)
        (l (string-split s)))
    (let loop ((changed #f))
      (for ((i (sub1 (length l))))
        (define s (lr l i))
        (define r (lr l (add1 i)))
        (define n (sl s))
        (define m (sl r))
        (when (> n m)
          (set! l (ls l i (ss s 0 m)))
          (set! l (ls l (add1 i)(string-append r (ss s m n))))
          (set! changed #t)))
      (if changed (loop #f)
          l))))

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

(f "Programming Puzzles & Code Golf")

আউটপুট:

'("P" "Prog" "&uzz" "Coderam" "Golflesming")

1

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

v=>(v=v.split`
`).map(_=>v=v.map((x,i)=>v[++i]?x.slice(0,n=v[i].length,v[i]+=x.slice(n)):x))&&v.join`
`

সিআর-এ বিভক্ত হয়ে বাইরের মানচিত্রটি নিশ্চিত করে যে "মাধ্যাকর্ষণ" অক্ষরগুলি যতটা ড্রপ করা দরকার ততক্ষণ অনুমতি দেওয়ার জন্য আমরা পর্যাপ্ত সময় লুপ করব।

অভ্যন্তরীণ মানচিত্রটি প্রথমে পরের লাইনটি আছে কিনা তা পরীক্ষা করে থাকে, যদি তা ছোট হয় তবে ওভারফ্লোটি পরবর্তী লাইনে ফেলে দিন। উদাহরণস্বরূপ, যদি প্রথম লাইনটিতে "এবিসিডি" থাকে এবং দ্বিতীয় লাইনে "এফজি" থাকে তবে "সিডি" 1 ম লাইন থেকে 2 য় এ ড্রপ করুন যাতে 1 ম লাইনটি "এবি" হয় এবং দ্বিতীয়টি "এফজিসিডি" হয়।

আমরা যতবার লাইন থাকি ততবার এটি করি, চিঠিগুলি তাদের যতদূর উচিত ড্রপ করে আমাদের কাঙ্ক্ষিত ফলাফল দিয়ে চলে যায় with


1

জাপট , 8 বাইট

y kS ù y

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

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

Uy kS ù y

Uy  Transpose at newline
kS  Replace spaces with nothing
ù   Left-pad to fit the longest line
y   Transpose at newline

এটি রয়েছে zযা 2 ডি স্ট্রিংটি 90 ডিগ্রির একাধিক দ্বারা আবর্তিত করে, তবে এটি যখন কোনওভাবে স্ট্রিংটি কেটে দেয় height > length


7 বাইট । যাইপকে স্বাগতম, পথে (যদি আমি ইতিমধ্যে আপনাকে স্বাগত না জানাই)
শেগি

1

05 এ বি 1 ই , 10 9 বাইট

¶¡RζðмζR»

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

বা বিকল্প শুরু সহ:

.BRøðмζR»

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

@ ডেনিস Py 'পাইথ উত্তর হিসাবে অনুরূপ পন্থা ।
-1 বাইট ধন্যবাদ @Emigna প্রতিস্থাপন ðõ:সঙ্গে ðм

ব্যাখ্যা:

¶¡       # Split on new-lines
  R      # Reverse the list
   ζ     # Zip/Transpose with unequal-length items (with space filler by default)
ðм       # Remove all spaces
  ζ      # Zip/Transpose unequal-length items (with space filler) again
   R     # Reverse the list again
    »    # Join the list by newlines, and output implicitly

বিকল্প ব্যাখ্যা:

.B      # Box (implicitly splits on new-lines and appends spaces)
   ø    # Zip/Transpose with equal-length items
        # Rest is the same

1

আর, এস 81 52 বাইট

function(x)apply(x,2,function(.).[order(!is.na(.))])

#old,longer version did the same but less efficiently
#function(x)apply(x,2,function(x){n<-na.omit(x);c(rep("",length(x)-length(n)),n)}))

আমি প্রশ্নের ব্যাখ্যায় কিছুটা স্বাধীনতা নিয়েছিলাম এবং ধরে নিয়েছিলাম যে পাঠ্যটি প্রতি মেট্রিক্সে প্রতি ঘরে প্রতিটি চরিত্রের সাথে প্রতিনিধিত্ব করা হয়েছে:

x <- as.matrix(read.fwf(textConnection("Programming
Puzzles
&
Code
Golf"), widths=rep(1, 11)))

সুতরাং এক্স হয়ে যায়:

     V1  V2  V3  V4  V5  V6  V7  V8  V9  V10 V11
[1,] "P" "r" "o" "g" "r" "a" "m" "m" "i" "n" "g"
[2,] "P" "u" "z" "z" "l" "e" "s" NA  NA  NA  NA 
[3,] "&" NA  NA  NA  NA  NA  NA  NA  NA  NA  NA 
[4,] "C" "o" "d" "e" NA  NA  NA  NA  NA  NA  NA 
[5,] "G" "o" "l" "f" NA  NA  NA  NA  NA  NA  NA 

এখন আমি ব্যবহার করি orderএবং [কলামগুলি বাছাই করার জন্য যাতে প্রথমে এনএ আসে এবং তারপরে অন্যান্য সমস্ত মান:

     V1  V2  V3  V4  V5  V6  V7  V8  V9  V10 V11
[1,] "P" NA  NA  NA  NA  NA  NA  NA  NA  NA  NA 
[2,] "P" "r" "o" "g" NA  NA  NA  NA  NA  NA  NA 
[3,] "&" "u" "z" "z" NA  NA  NA  NA  NA  NA  NA 
[4,] "C" "o" "d" "e" "r" "a" "m" NA  NA  NA  NA 
[5,] "G" "o" "l" "f" "l" "e" "s" "m" "i" "n" "g"

আউটপুটটি শব্দ হওয়া প্রয়োজন হলে এটি দীর্ঘ হয়:

s <- (function(x)apply(x,2,function(.).[order(!is.na(.))]))(x)
s[is.na(s)]<-""
apply(s, 1, paste, collapse="")
# [1] "P"           "Prog"        "&uzz"        "Coderam"     "Golflesming"

পিপিসিজিতে স্বাগতম (ফিরে)! যতক্ষণ না আপনার ফর্ম্যাটটির সাথে ওপি ভাল থাকে ততক্ষণ আপনি নিরাপদ! স্বাভাবিক উপায়টি প্রশ্নের একটি মন্তব্যে এটি জিজ্ঞাসা করা।
জয়সি

আপনার অন্য প্রশ্নের উত্তরে যেমন উল্লেখ করা হয়েছে, উত্তরগুলি সম্পূর্ণ ফিউশন বা প্রোগ্রাম হওয়া function(x)দরকার তাই বাইট গণনায় অন্তর্ভুক্ত করা দরকার।
জয়সি

1

আর, 196 189 170 বাইট

function(x){l=nchar;o=function(y)which(diff(l(y))<0)[1];d=function(x,i)"[<-"(x,i:(j<-i+1),c(a<-substr(x[i],1,l(x[j])),sub(a,x[j],x[i])));while(!is.na(o(x)))x=d(x,o(x));x}

একটি মানব-পঠনযোগ্য সংস্করণ:

f<-function(x){
  l=nchar;

  # find the first line in x that is longer than the next line
  # if no such line exists o(x) will be NA
  o = function(y) which(diff(l(y))<0)[1]

  # d(x,i) --> clips the line i in x, adding the remainder to x[i+1]
  d = function(x,i) "[<-"(x,i:(j<-i+1),
        c(a<-substr(x[i],1,l(x[j])), sub(a,x[j],x[i])))
         # a --> clipped x[i],      sub(a,x[j],x[i]) --> expanded x[j]

  while(!is.na(o(x)))x=d(x,o(x));x
}                            

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

  1. প্রথম "খারাপ" লাইনটি ধরুন, অর্থাৎ লাইন যা পরের লাইনের চেয়ে দীর্ঘ হবে, "অতিরিক্ত" অংশটি নিয়ে যান এবং পরবর্তী লাইনে যুক্ত করুন
  2. হ্যাঁ # 1 এ যান কিনা কোনও "খারাপ" লাইন বাকি আছে কিনা তা পরীক্ষা করে দেখুন

(বা অন্য কথায়, "অতিমাত্রায়িত" অংশগুলি নীচে পড়ে যায় যতক্ষণ না নীচে পড়তে পারে সমস্ত কিছু নীচে পড়ে যায়))

ইনপুট: একটি অক্ষর ভেক্টর।

x<-readLines(textConnection("Programming\nPuzzles\n&\nCode\nGolf"))
f(x)
# [1] "P"           "Prog"        "&uzz"        "Coderam"     "Golflesming"

0

জুলিয়া 0.6 , 141 বাইট

l=length
g(z,i)=(n=z[i];m=z[i+1];(N,M)=l.([n,m]);z[i:i+1]=[n[1:min(N,M)],m*n[M+1:N]])
f(s,w=split(s),d=1:l(w)-1)=(g.([w],[d d]);join(w,"\n"))

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

এর সাথে সম্প্রচার করা g.([w], [d d])আমাকে যে কোনও মানচিত্রের বিবৃতি থেকে মুক্তি পেতে দেয় এবং আমার প্রায় 7 বাইট সংরক্ষণ করে।

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