চরিত্রের ক্রস


31

আমি পিসিজিতে আমার প্রথম ধাঁধা হিসাবে আরও জটিল কিছু পোস্ট করার প্রত্যাশা করছিলাম তবে স্ট্যাক ওভারফ্লোতে হোমওয়ার্কের প্রশ্নটি আমাকে পোস্ট করতে অনুপ্রাণিত করেছিল। তারা চায়:

বিজোড় সংখ্যক বর্ণ সহ যে কোনও প্রদত্ত শব্দের জন্য নিম্নলিখিত প্যাটার্নটি মুদ্রণ করুন :

P           M
  R       A   
    O   R    
      G       
    O   R      
  R       A   
P           M 


লক্ষ্য করুন যে চিঠিগুলি আপনার মুদ্রণের জন্য প্রয়োজনীয় প্যাটার্নে একটি নাইটের চলাফেরা। সুতরাং, অন্যান্য প্রতিটি কলাম খালি আছে। - (এটি নির্দেশ করার জন্য ধন্যবাদ xnor ।)

বিধি

  1. সি ++ ব্যবহার নিষিদ্ধ। যেহেতু আমি এই প্রশ্নটি এখানে যুক্ত করতে পারি।
  2. আপনি stdoutবা দ্রুত কোনও স্ট্রিং আউটপুট দেওয়ার যে কোনও উপায় ব্যবহার করতে পারেন (যেমন alert()জাভাস্ক্রিপ্টে)।
  3. সর্বদা হিসাবে, সংক্ষিপ্ততম কোড জিতেছে।

2
এটি স্ট্যাক ওভারফ্লো সম্পর্কিত পোস্টগুলিতে রয়েছে: stackoverflow.com/q/5508110
স্তর নদী সেন্ট

2
@ ফ্লোয়ার আমার মনে হয় এটি অদ্ভুত অর্থ, এমনকি কোনও সংখ্যার মতো নয়।
নিনজাবিয়ারমনকি

31
God
শ্বর

2
@jpjacobs: বাইটস, যদি না প্রশ্নটি স্পষ্টভাবে অন্যথায় বলে না।
ডেনিস

2
পুরো প্রোগ্রাম বা শুধু একটি ফাংশন? (প্রথমে উত্তর দেওয়ার এবং পরে এই প্রশ্নটি করার জন্য আমার আসল স্মার্ট ...)
রডল্ফো ডায়াস

উত্তর:


13

পাইথ , 22

Vzjdm?@zd}N,dt-lzd\ Uz

টেস্ট:

$ pyth -c 'Vzjdm?@zd}N,dt-lzd\ Uz' <<< "CODE-GOLF"
C               F
  O           L  
    D       O    
      E   G      
        -        
      E   G      
    D       O    
  O           L  
C               F

ব্যাখ্যা:

(Implicit)                  z = input()
(Implicit)                  d = ' '
Vz                          for N in range(len(z)):
  jd                            print(d.join(
    m                               map(lambda d:
     ?@zd                                        z[d] if
         }N                                      N in
           ,dt-lzd                                    (d,len(z)-d-1) else
      \                                          " ",
     Uz                                          range(len(z)))))

পাইথের কোনও পরিপূরক নয়?
xnor

@ এক্সনর না, তবে এটি কোনও উপকারে আসেনি। ধরুন ~, পাইথের মধ্যে কিছুটা দিক ছিল না। তারপরে আমরা পরিবর্তন t-lzdকরতে পারি +lz~d- এখনও 5 টি অক্ষর।
isaacg

Vzএকটি ঝরঝরে কৌতুক হল: আমি জানতাম না যে U<string>দিলেন range(len(<string>))
FryAmTheEggman

হ্যাঁ, এটি একটি দুর্দান্ত বৈশিষ্ট্য। তালিকায়ও সেভাবে কাজ করে তবে প্রয়োজনীয়ভাবে টিপলস হয় না। সম্পাদনা: ওফস, এটি ডকুমেন্টেশন থেকে অনুপস্থিত। আমি এটি যুক্ত করব। দুঃখিত।
isaacg

20

এপিএল ( 37 35 34 27)

↑{∊2↑¨⍵↑¨I}¨↓(+∨⌽)∘.=⍨⍳⍴I←⍞

এটি কীবোর্ড থেকে ইনপুট নেয়, যেমন:

      ↑{∊2↑¨⍵↑¨I}¨↓(+∨⌽)∘.=⍨⍳⍴I←⍞
CODE-GOLF
C               F 
  O           L   
    D       O     
      E   G       
        -         
      E   G       
    D       O     
  O           L   
C               F 

7
আমার সমস্ত upvotes এপিএল অন্তর্গত।
নিট

13

পাইথন 2 - 94 90 89 88

s=input()
L=len(s)
R=range(L)
for i in R:print" ".join([s[j]," "][j!=i!=L+~j]for j in R)

ইনপুট:

"CODE-GOLF"

আউটপুট:

C               F
  O           L  
    D       O    
      E   G      
        -        
      E   G      
    D       O    
  O           L  
C               F

আমি ঠিক একই জিনিস লিখছিলাম। আমার এক উন্নতি i in[j,L+~j]
xnor

@ এক্সনর: আরও ছোট একটি শর্ত পাওয়া গেছে। ;)
ফালকো

চালাক। আপনি এখনও করতে পারেন L+~j
xnor

@ এক্সনর: আহা, আপনি ঠিক বলেছেন। আমি সর্বদা +~কৌশলটি ভুলে যাই ...
ফালকো

আপনি for i in R:print" ".join([s[j]," "][j!=i!=L+~j]for j in R)একটি চর সংরক্ষণ করতে পারেন ? (পরীক্ষার জন্য আমার কাছে পাইথন 2 এ এখনই অ্যাক্সেস নেই))
xnor

11

পাইথন 3: 75 টি অক্ষর

s=input()
i=n=len(s)
while i:i-=1;a=[" "]*n;a[i]=s[i];a[~i]=s[~i];print(*a)

লাইনের জন্য i, we start with a list of spaces and set the entries i from the front and back to be equal to the letters of the input string. Then, we print the result.

পাইথন স্ট্রিং অপরিবর্তনীয়, সুতরাং aপরিবর্তে অক্ষরের একটি তালিকা হতে হবে। aলুপটির ভিতরে তালিকাটি অবশ্যই শুরু করতে হবে বা পরিবর্তনগুলি লুপগুলির মধ্যে বহন করবে। আমরা ব্যাবহার করিprint(*a) to print each character in the list, space separated, which requires Python 3.

আউটপুট লাইনগুলি প্রতিসম হয়, তাই আমরা iকিছুক্ষণ লুপ ব্যবহার না করে গণনা করতে পারি ।

>>> CODE-GOLF
C               F
  O           L  
    D       O    
      E   G      
        -        
      E   G      
    D       O    
  O           L  
C               F

এটি একটি এমনকি সংখ্যক অক্ষরের জন্যও কাজ করে।

>>> CODEGOLF
C             F
  O         L  
    D     O    
      E G      
      E G      
    D     O    
  O         L  
C             F

এটিকে পাইথে রূপান্তরিত করে, আমি পেয়েছি VlzJ*]dlz=@JN@zN=@Jt_N@_zNjdJযা 29 বাইট ... আমার ধারণা , এপিএলকে হারাতে আমাকে আরও কিছু চেষ্টা করতে হবে। এছাড়াও, প্রমাণ হিসাবে পাইথন 3 পাইথন 2 (কখনও কখনও) আউট করতে পারে
FryAmTheEggman

@fry Python 3 usually out-golfs 2 in my experience. Even if nothing changes anywhere else, most challenges give one input and expect one output, and len("raw_input()") + len("print ") > len("input()") + len("print()").
undergroundmonorail

@undergroundmonorail Well, the trouble with that is that input() is also valid in python 2 (it just acts somewhat differently), so unless the input for the challenge is quite strict, python 2 will usually win out.
FryAmTheEggman

Wow, even with Python 2 and print" ".join(a) your code is shorter (82) than mine.
Falko

@FryAmTheEggman See my answer - it's an adaptation of the other python answer, and it's much shorter than APL. Pyth really doesn't like assigning to indexes, unfortunately.
isaacg

8

CJam, 27 25 bytes

l_,S*:Sf{W):W2$tW~@tS}zN*

Try it online.

Example run

$ cjam <(echo 'l_,S*:Sf{W):W2$tW~@tS}zN*') <<< CROSS; echo
C       S 
  R   S   
    O     
  R   S   
C       S 

উত্তরের উদাহরণ হিসাবে, প্রতিটি লাইনের শ্বেত স্পেস রয়েছে tra

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

                             " N := '\n'; R := []; S = ' '; W := -1 ";
l                            " Q := input()                         ";
 _,S*:S                      " S := len(Q) * S                      ";
       f{            }       " for each C in Q:                     ";
                             "   T := S                             ";
         W):W                "   W += 1                             ";
             2$t             "   T[W] := C                          ";
                W~@t         "   T[~W] := C                         ";
                             "   R += [T]                           ";
                    S        "   R += [S]                           ";
                      z      " R := zip(R)                          ";
                       N*    " R := N.join(R)                       ";
                             " print R                              ";

1
দুঃখিত যে এটি মূলত একটি 'দুর্দান্ত উত্তর!' মন্তব্য করুন, তবে আমি কেবল বলেছিলাম যে এটি আমার পক্ষে কখনও কখনও সারিগুলির পরিবর্তে কলামগুলি দিয়ে কলামটি তৈরির জন্য ঘটেনি।
FryAmTheEggman

4

জাভা - 168

একটি সাধারণ নেস্টেড লুপ, এখানে আসলেই বিশেষ কিছু হচ্ছে না।

class C{public static void main(String[]a){int b=-1,c=a[0].length()-1,d;for(;b++<c;)for(d=-1;d++<c;)System.out.print((b==d|b==c-d?a[0].charAt(d):" ")+(c==d?"\n":""));}}

লাইন বিরতি সহ:

class C{
    public static void main(String[]a){
        int b=-1,c=a[0].length()-1,d;
        for(;b++<c;)
            for(d=-1;d++<c;)
                System.out.print(
                    (b==d|b==c-d?a[0].charAt(d):" ")+
                    (c==d?"\n":""));
    }
}

4

খাঁটি বাশ, 94 বাইট

l=${#1}
for((;t<l*l;t++));{
((x=t%l))||echo
((x-t/l&&x+t/l+1-l))&&printf \ ||printf ${1:x:1}
}

1
অনেক বেশি t%lগণনা। ভেরিয়েবলের প্রথম ব্যবহারে এটি সংরক্ষণ করুন ((x=t%l))তারপরে এটি ভেরিয়েবলটি 94 অক্ষরে কমাতে ব্যবহার করুন।
manatwork

আহ হ্যাঁ, আমি এই কাজ করেছিলেন x=t%lএবং y=t/lএবং এটি আর ছিল ... আমার মন ব্যবহারের জন্য শুধুমাত্র x শুধু ক্রস করা হয়নি
ডিজিটাল ট্রমা

4

রুবি, 64

f=->w{x=w.size
x.times{|i|y=" "*x
y[i],y[~i]=w[i],w[~i]
puts y}}

ব্যাখ্যা

  • ইনপুট একটি ল্যাম্বডায় যুক্তি হিসাবে নেওয়া হয়। এটি প্রত্যাশা করে aString
  • একটি লুপে যা শব্দটির প্রতিটি অক্ষরকে কূট দেয় ( nমোট):
    • nস্পেস সমন্বিত একটি স্ট্রিং তৈরি করুন ।
    • ইনপুট এর th এবং th অক্ষরের সাথে ith এবং n-ith ( ~i, xnor ধন্যবাদ) স্থানটি প্রতিস্থাপন করুন।in-i
    • লাইনটি মুদ্রণ করুন

7
25,000 তম উত্তর পোস্ট করার জন্য অভিনন্দন! :) (প্রকৃতপক্ষে, আমি ক্যাশিংয়ের কারণে আমি 100% নিশ্চিত নই, তবে এটিই ছিল সর্বশেষ উত্তর, যখন আমি সাইটের পরিসংখ্যানগুলিতে প্রথম "25,000 উত্তর" দেখেছি।)
মার্টিন ইন্ডার

2
আপনি -i-1বিট পরিপূরক হিসাবে করতে পারেন ~i
xnor

এটা খুব চালাক, ধন্যবাদ!
ব্রিটিশিয়া

2
এই পদ্ধতির সাথে, এটি একটি ল্যাম্বদার পরিবর্তে স্টিডিন ব্যবহার করা সুবিধাজনক বলে মনে হচ্ছে: gets.size.times{|x|u=?\s*~/$/;u[x]=$_[x];u[~x]=$_[~x];puts u}(অনুমান করে ইনপুট কোনও নতুন লাইন দ্বারা বন্ধ করা হয় না, যেমন echo -n CODE-GOLF)। এর পরে .charsঅন্য চরিত্রটি সংরক্ষণ করতে কেউ অতিরিক্ত ব্যবহার করতে পারে:x=0;gets.chars{|r|u=?\s*~/$/;u[x]=r;u[~x]=$_[-x+=1];puts u}
ভেন্টোরো

4

জাভাস্ক্রিপ্ট (E6) 101 95 129 136

ভুল অক্ষরের ব্যবধান সম্পাদনা করুন । সংশোধন করা হয়েছে। লুপগুলির জন্য ক্লাসিক ব্যবহার করে সহজ এবং খাটো
সম্পাদনা করুন
একটি ফাংশন হিসাবে, পপআপের মাধ্যমে আউটপুট।

F=a=>{
  for(l=a.length+1,i=s=o='';++i<l;s='\n')
    for(j=0;++j<l;)
      o+=s+((s=' ')+a)[j==i|i+j==l&&j]
  alert(o)
}

.Map ব্যবহার করে পূর্ববর্তী সংস্করণ

F=a=>alert([...a].map((c,p)=>
  --q<p
  ?B(q)+a[q]+B(p-q-1)+c 
  :B(p)+c+(p-q?B(q-p-1)+a[q]:'')
,B=n=>' '.repeat(n),q=a.length).join('\n'))

টেস্ট ফায়ারফক্স / ফায়ারবাগ কনসোলটি

F('Java-Script')

আউটপুট

J                   t
  a               p  
    v           i    
      a       r      
        -   c        
          S          
        -   c        
      a       r      
    v           i    
  a               p  
J                   t

2
এতে পর্যাপ্ত অনুভূমিক ব্যবধান নেই - অক্ষরের সাথে প্রতিটি কলামের মধ্যে সমস্ত জায়গার কলাম থাকতে হবে।
isaacg

4

বেফুঞ্জ -93, 68 71

:~:84*-!#@#v_\:2*\4+p1+
::+\4+g:!| >$1+0:>p1-::
00+4\*2:\<>0p#:- ^#2g

আপনি এটি এখানে পরীক্ষা করতে পারেন । এটি প্রতিটি পাসের সাথে একটি ইনপুট ডায়ালগ বক্স নিয়ে আসবে ~; আপনার শব্দটি একবারে একটি অক্ষর লিখুন (এটি বলে যে ইনপুটটি 'ক্লুঙ্কি' সর্বোপরি), একটি স্থান দিয়ে শেষ হবে।

এটি কনসোলে মুদ্রণ করবে না; এটি সর্বোপরি আত্ম-পরিবর্তনের ইঙ্গিত ছাড়া বেফুঞ্জ হবে না! পরিবর্তে বার্তাটি প্রদর্শনের জন্য এটি নিজস্ব গ্রিড পরিবর্তন করবে। এটি সম্পন্ন হওয়ার পরে, গ্রিডটি এর মতো দেখতে পাবেন:

 ~:84*-!#@#v_\:2*\4+p1+
::+\4+g:!| >$1+0:>p1-::
00+4\*2:\<>0p#:- ^#2g

c               f      
  o           l        
    d       o          
      e   g            
        -              
      e   g            
    d       o          
  o           l        
c               f

(কোষের মহৎ কোরবানি নোট করুন (0,0), পরে আমরা জানার পরে পয়েন্টারটি আর সেখানে যাবে না, এক টুকরো ডেটা সংরক্ষণ করার উদ্দেশ্যে।)

এটি এমনকি দৈর্ঘ্যের ইনপুটগুলির সাথেও কাজ করে। নোট করুন, যেহেতু বেফুঞ্জ -৩৩ একটি 80x25 গ্রিডের মধ্যে সীমাবদ্ধ তাই আপনি যদি এটি বেফঞ্জ -৩৩ অনুবাদকারীর মধ্যে চালনা করেন তবে ইনপুট আকারটি 21 টি অক্ষরের মধ্যে সীমাবদ্ধ। এটি বেফুঞ্জ -98 হিসাবে চালানোর ক্ষেত্রে এই সীমাটি সরিয়ে দেওয়া উচিত।

সম্পাদনা করুন - এখন এটি কেবল তিনটি অক্ষরের দৈর্ঘ্যের ব্যয় করে লক্ষ্যযুক্ত আউটপুটটির লাইন ধরে আরও কাজ করে।


নোটগুলি ফাঁকা কলাম দিয়ে পৃথক করা হয়েছে তা নোট করুন। চিঠিগুলি অপেক্ষাকৃত এল আকারে।
সংপাথ্রিস

Drats! জটিল জিনিস বরং উল্লেখযোগ্যভাবে। আমি মনে করি আমি এটি উদ্ধার করতে পারি তবে এটি শেষ আকারে যুক্ত করবে ... ওহ ভাল।
কাসরান

4

জাভাস্ক্রিপ্ট 102 84 85

সম্পাদনা: ব্যবধান ঠিক করতে হয়েছিল। এখন আর ছোট নয়।

function p(s){for(i in s){o='';for(n in s)o+=(n==i?s[n]:n==s.length-1-i?s[n]:' ')+' ';console.log(o)}}

p('Thanks-Dennis')

T                       s
  h                   i
    a               n
      n           n
        k       e
          s   D
            -
          s   D
        k       e
      n           n
    a               n
  h                   i
T                       s

এতে পর্যাপ্ত অনুভূমিক ব্যবধান নেই।
ডেনিস

1
বাহ, আমার চেয়ে খাটো এবং এমনকি ES6 ব্যবহার করছে না। +1
স্কিমোনস্টার

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

1
function(s)আপনি পুনরাবৃত্তি না করার পরে এবং আপনি এটি তৈরি করতে পারবেন না ?
জাকারি

3

সিজেম, 38 36 35 34 32 বাইট

l:I,,_f{f{_2$=@2$+I,(=|\I=S?S}N}

এটি এখানে পরীক্ষা করুন। এটি STDIN এর ইনপুট শব্দটি পড়ে। এটি একটি এমনকি সংখ্যক চরিত্রের জন্যও কাজ করে। এটি স্পেসের একটি পেছনের কলামটি মুদ্রণ করে তবে আমি এর বিপরীতে কিছু দেখছি না।

ব্যাখ্যা

l:I,,_f{f{_2$=@2$+I,(=|\I=S?S}N}
l:I                              "Read input and store it in I.";
   ,                             "Get string length.";
    ,_                           "Turn into range and duplicate.";
      f{                       } "Map block onto first range, with second range on the stack.";
        f{                   }   "Map block onto second range, with first iterator in stack.
                                  Each invocation of this block will start with grid coordinates
                                  y and x on the stack (x on top).";
          _2$=                   "Duplicate x, duplicate y, check for equality.";
              @2$+               "Pull up y, duplucate x, add,";
                  I,(=           "Check if that's one less than the string length.";
                      |          "Bitwise or between conditions.";
                       \         "Swap condition and x.";
                        I=       "Take x'th character from the string.";
                          S?     "Push a space and select character depending on condition.";
                            S    "Push another space.";
                              N  "Push a line feed.";

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


আমার প্রিয় সিজেম, আপনি সবেমাত্র এপিএলকে পরাজিত করেছেন। ^ _ ^
ভ্যাক্সকুইস

@ ভ্যাক্সকুইস আমি অবাক হয়েছি যে আমি এটি প্রথম স্থানে দুবার পরাজিত করতে সক্ষম হয়েছি। এই সমস্যাটি এপিএল এবং কো-এর সাথে স্ট্যাক-ভিত্তিক ভাষাগুলির চেয়ে বেশি উপযুক্ত বলে মনে হয়।
মার্টিন ইন্ডার

2
ভাল, অন্তত এটা লিখতে সহজ l:I,,_f{f{_2$=@2$+I,(=|\I=S?S}N}চেয়ে ন্যাপকিন উপর ↑{∊2↑¨⍵↑¨I}¨↓(+∨⌽)∘.=⍨⍳⍴I←⍞... মৃদুহাস্য
vaxquis

ঠিক আছে, অন্য কেউ সিজেএম ব্যবহার করে আমাকে মারধর করতে সক্ষম হয়েছে, এবং আমি আমার প্রোগ্রামকে আরও ছোট করতে পারি না, ফলে সিজেম আমাকে শেষ পর্যন্ত মারধর করেছিল। (তবে পাইথ মুকুট পেয়েছে।) (এটি বলেছে, @ ভ্যাক্সকুইস, এপিএল এখানে ব্যবহৃত অন্যান্য ভাষার তুলনায় খুব সহজেই পড়া সহজ, আপনি একবার the০ বা তার বেশি অক্ষরগুলি জানেন, এবং অবশ্যই পাইথ বা সিজেম বা তুলনামূলকভাবে তুলনা করলে এমনকি জে।)
মেরিনাস

3

সি, 105

এটি করার দুটি সামান্য ভিন্ন উপায়।

c,i,j;main(int l,char**v){for(l=strlen(v[1]);j-l;)putchar((c=v[1][i++])?i-1-j&&l-i-j?32:c:(i=0,j++,10));}

i,j;main(int l,char**v){for(l=strlen(v[1]);j-l;i++)putchar((l-i)?i-j&&l-i-j-1?32:v[1][i]:(i=-1,j++,10));}

আপনি অতিরিক্ত স্পেস যুক্ত করতে চান তাহলে, প্রতিস্থাপন putchar(সঙ্গে printf(" %c",একটি অতিরিক্ত 5 অক্ষরের জন্য।


3

জে - 36 30 বাইট:

সম্পাদনা করুন: 6 টি অক্ষর ছোট, ক্রেডিটগুলি @ অ্যালগরিদমশার্কে যান ।

(1j1#"1' '&,({~](*>.*&|.)=)#\)

উদাহরণ:

   (1j1#"1' '&,({~](*>.*&|.)=)#\) 'Code-Golf'
C               f
  o           l  
    d       o    
      e   G      
        -        
      e   G      
    d       o    
  o           l  
C               f

বোনাস: এমনকি দৈর্ঘ্যের স্ট্রিংগুলির সাথেও কাজ করে:

   (1j1#"1' '&,({~](*>.*&|.)=)#\) 'CodeGolf'
C             f
  o         l  
    d     o    
      e G      
      e G      
    d     o    
  o         l  
C             f

3

প্রোলোগ - 240 বাইট

:-initialization m.
+[]. +[H|T]:-(H=' ';!),+T.
+[H|T]+I+X:-0=:=I,X=H;+T+(I-1)+X.
+L+I+C+S:-L=:=I;S=[D|E],+C+I+B,+C+(L-I-1)+B,+B+2*I+D,+L+(I+1)+C+E,+B,writef('%s\n',[B]).
-X:-get_char(C),(C='\n',X=[];X=[C|Y],-Y).
m:- -X,length(X,L),+L+0+_+X.

আবাহন:

$ echo "Code-Golf" | swipl -qf c.pl
C               f
  o           l
    d       o
      e   G
        -
      e   G
    d       o
  o           l
C               f

রিডেবল:

:- initialization(main).

vars_to_spaces([]).
vars_to_spaces([' '|T]) :- vars_to_spaces(T).
vars_to_spaces([_|T]) :- vars_to_spaces(T).

get_index([Head|_], Index, Result) :-
    0 =:= Index,
    Result = Head.
get_index([_|Tail], Index, Result) :-
    get_index(Tail, Index-1, Result).

print_loop(Length, Index, Board, String) :-
    Length =:= Index;
    String = [FirstChar|RestString],
    get_index(Board, Index, Line),
    get_index(Board, Length-Index-1, Line),
    get_index(Line, 2*Index, FirstChar),
    print_loop(Length, Index+1, Board, RestString),
    vars_to_spaces(Line),
    writef('%s\n', [Line]).

get_line(Line) :-
    get_char(C),
    (   C = '\n', Line = [];
        Line = [C|More], get_line(More)).

main :-
    get_line(String),
    length(String, Length),
    print_loop(Length, 0, _, String).


3

আর , 99 98 93 89 বাইট

m=ifelse(diag(l<-length(w<-el(strsplit(scan(,''),'')))),w,' ')
write(pmax(m,m[,l:1]),1,l)

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

লাইন 1 ইনপুট স্ট্রিং পড়ে, অক্ষরে বিভক্ত করে, তার দৈর্ঘ্য সঞ্চয় করে এবং তার মূল তির্যক শব্দটির সাথে একটি ম্যাট্রিক্স তৈরি করে - শব্দের অক্ষর একটি পরিচয় ম্যাট্রিক্সে সুপারপোজ করা হয় (এবং এর দৈর্ঘ্যের সাথে মেলানোর জন্য পূর্বনির্ধারিতভাবে পুনরাবৃত্তি হয়) এবং কেবল সেগুলি মিলে যায় 1 টি ধরে রাখা হয়েছে, অন্যরা ফাঁকা স্থান দ্বারা প্রতিস্থাপিত হচ্ছে।

লাইন 2 মায়্রিক্সটি তির্যক ম্যাট্রিক্স বা এর অনুভূমিকভাবে মিরর করা সংস্করণগুলির যে কোনওটির থেকে বড় আকারের দ্বারা গঠিত একটি ম্যাট্রিক্স মুদ্রণ করে।

C2 + 1 = −1 বাইট জয়সি কে ধন্যবাদ

I4 বাইট জিউসেপ্পিকে ধন্যবাদ


1
খুব সুন্দর! এবং দুর্দান্ত ব্যাখ্যা.আপনি 2 বাইট সংরক্ষণ
জেসি

1
তিনি অন্যান্য উত্তর এবং প্রশ্নের দিকে তাকান - দেখে মনে হচ্ছে ম্যাট্রিক্স বড় হওয়া উচিত (অতিরিক্ত স্থান) - আউটপুটটি বর্গক্ষেত্রের ম্যাট্রিক্স হওয়া উচিত নয় ..
জেসি

@ জাসি 2 বাইটের জন্য ধন্যবাদ! এবং ফর্ম্যাটিং সম্পর্কে মন্তব্য করার জন্য ধন্যবাদ, আপনি সম্ভবত সঠিক (যদিও নিয়মগুলি এ সম্পর্কে আরও পরিষ্কার হতে পারে)। ভাগ্যক্রমে প্রিন্ট করার সময় সেগুলির জন্য পৃথক পৃথক স্থানে একটি স্থান স্থাপন করা দরকার ছিল।
রবার্ট হ্যাকেন

89 বাইটসpmax আরও কিছু অ্যাসাইনমেন্ট ব্যবহার করে এবং ইনলাইন করে
জিউসেপ

@ জিউসেপ ধন্যবাদ! দুঃখের বিষয়, J.Doe এর সমাধান
রবার্ট হ্যাকেন

2

সি # ( 214 212)

(অবশ্যই খারাপভাবে) গল্ফযুক্ত সংস্করণ:

using System;class A{static void Main(){char[]a,w=Console.ReadLine().ToCharArray();int l=w.Length,i=0;for(;i<l;i++){a=new string(' ',2*l-1).ToCharArray();a[2*i]=w[i];a[2*l-2*i-2]=w[l-i-1];Console.WriteLine(a);}}}

অবরুদ্ধ সংস্করণ:

using System;

class A
{
  static void Main()
  {
    char[] a, w = Console.ReadLine().ToCharArray();
    int l = w.Length, i = 0;
    for (; i < l; i++)
    {
      a = new string(' ', 2 * l - 1).ToCharArray();
      a[2 * i] = w[i];
      a[2 * l - 2 * i - 2] = w[l - i - 1];
      Console.WriteLine(a);
    }
  }
}

কোনও ইঙ্গিত, টিপস, কৌশল বা মন্তব্য খুব স্বাগত জানায়, কারণ কোডগল্ফে এটি আমার প্রথম প্রচেষ্টা। আমি কেবল এটি চেষ্টা করে দেখতে চেয়েছি, যদিও আমি জানি আমার সি # বাইট দৈর্ঘ্য সর্বোত্তম সমাধানের দ্বিগুণও হবে না;)

এবং ছেলেরা কীভাবে আপনার বাইটগুলি গণনা করবে? আমি উপরেরটিকে একটি দ্রুত ওয়াচ উইন্ডোতে সবেমাত্র পোস্ট করেছি এবং করেছি .Length। আমি আমার জন্য বাইটগুলি গণনা করার জন্য একটি ছোট প্রোগ্রাম লিখতে পারি, তবে আমি বাজি ধরি এমন একটি সহজ উপায় আছে যা আমি এখনও জানি না।


স্পেসগুলি সরিয়ে আপনি দুটি বাইট সংরক্ষণ করতে পারেন for(;i < l;i++)
বিটা ক্ষয়

এছাড়াও, আমি এটি আমার বাইট গণনার জন্য ব্যবহার করি ।
বিটা ক্ষয়

@ বেটাডেহে আহ্ গ্রেট, আমি অবশ্যই এগুলিকে উপেক্ষা করেছি। এবং লিংকের জন্য ধন্যবাদ!
InvisiblePanda

2

জাভাস্ক্রিপ্ট (ES6) - 185 177 175 170 বাইট

f=n=>{return s='  ',r='repeat',n=[...n],l=n.length,j=l/2-.5,[...h=n.slice(0,j).map((c,i)=>s[r](i)+c+s[r](l-2-(i*2))+' '+n[l-i-1]),s[r](j)+n[j],...h.reverse()].join('\n')}

এটি ফায়ারফক্স কনসোলে রেখে দিন f('PROGRAM'):

P           M
  R       A
    O   R
      G
    O   R
  R       A
P           M

f("CODE-GOLF"):

C               F
  O           L
    D       O
      E   G
        -
      E   G
    D       O
  O           L
C               F


আমি এটাও দেখেছি।
সিমোনস্টার

2

গণিত, 149 বাইট

FromCharacterCode@Flatten[Append[Riffle[#,32],10]&/@MapThread[Max,{#,Reverse@#,ConstantArray[32,Dimensions@#]},2]&@DiagonalMatrix@ToCharacterCode@#]&

ইনপুটটি ফাংশনটির প্যারামিটার হিসাবে পাস করেছে; ফাংশন আউটপুট স্ট্রিং প্রদান করে। আউটপুট শেষে একটি ট্রেলিং নিউলাইন রয়েছে।

ব্যাখ্যা: আমরা স্ট্রিং সহ একটি তির্যক ম্যাট্রিক্স তৈরি করি, তারপরে আমরা Reverse@#সারিগুলি বিপরীত করে উল্লম্বভাবে উল্টানো এর একটি অনুলিপি তৈরি করি । তারপরে আমাদের কাছে একই মাত্রার তৃতীয় ম্যাট্রিক্স রয়েছে কেবলমাত্র 32 (এসকিআই স্পেস) সমন্বিত। আমরা MapThreadএই 3 টি ম্যাট্রিকের উপাদান-ভিত্তিক সর্বোচ্চটি ব্যবহার করি । অবশেষে, আমরা Riffleপ্রতিটি সারিতে ফাঁকা করি, শেষে Appendএকটি নতুন লাইন এবংFlatten ফলাফল।


2

সি , 119

i,j;main(int l,char**v){l=strlen(v[1]);for(i=0;i<l;i++){for(j=0;j<l;j++)putchar((i-j)*(j-l+i+1)?32:v[1][j]);puts("");}}

এটি সি ++ হিসাবে সংকলিত নাও হতে পারে, সুতরাং আমি আশা করি, আমি বিধি লঙ্ঘন করি নি :)


১. আউটপুটটি বর্তমানে ভুল। বর্ণগুলির মধ্যে একটি স্থান থাকা উচিত। ২. i=0এবং j=0প্রয়োজনীয় নয়, যেহেতু বৈশ্বিক চলকগুলি শূন্যে আরম্ভ করা হয়। 3. আপনি main(l,v)char**v;পরিবর্তে ব্যবহার করতে পারেন main(int l,char**v)। ৪. আপনি যদি এটি iহিসাবে আপডেট করেন তবে আপনি i+=puts("")বাইরের লুপের কোঁকড়ানো বন্ধনীগুলি থেকে মুক্তি পেতে পারেন।
ডেনিস

2

পার্ল - 90

এটির বাইরে আরও কয়েকটি অক্ষর ছাঁটাই করা সম্ভব হতে পারে:

($j=$i++%8)==7?++$k&&print"\n":print$j+1==$k||7-$j==$k?"$_ ":"  "for split//,($_ x y///c)

89 + + 1 জন্য-n

সাথে চালান:

echo "program" | perl -nE'($j=$i++%8)==7?++$k&&print"\n":print$j+1==$k||7-$j==$k?"$_ ":"  "for split//,($_ x y///c)'

আউটপুট:

p           m
  r       a
    o   r
      g
    o   r
  r       a
p           m

2

টি-এসকিউএল: 180

ভেরিয়েবল @ আই থেকে ইনপুট নেওয়া

DECLARE @s VARCHAR(MAX)=REPLICATE('  ',LEN(@i)),@ INT=1a:PRINT STUFF(STUFF(@s,@*2-1,1,SUBSTRING(@i,@,1)),LEN(@i)*2-(@*2)+1,1,SUBSTRING(@i,LEN(@i)-@+1,1))SET @+=1IF @<=LEN(@i)GOTO A

এটি শুরু থেকে একাগ্র অক্ষরগুলিকে স্টাফের স্ট্রিংয়ে শুরু এবং শেষ হতে পারে।

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

DECLARE @i VARCHAR(MAX)='Super Large'
DECLARE @s VARCHAR(MAX)=REPLICATE('  ',LEN(@i)),@ INT=1a:PRINT STUFF(STUFF(@s,@*2-1,1,SUBSTRING(@i,@,1)),LEN(@i)*2-(@*2)+1,1,SUBSTRING(@i,LEN(@i)-@+1,1))SET @+=1IF @<=LEN(@i)GOTO A
S                   e 
  u               g   
    p           r     
      e       a       
        r   L         

        r   L         
      e       a       
    p           r     
  u               g   
S                   e 

2

পাওয়ারশেল 118 102 97

($x=[char[]]"$args")|%{$i++;$y=[char[]]" "*$x.Count;$y[$i-1]=$x[$i-1];$y[-$i]=$x[-$i];$y-join' '}

আউটপুট:

PS C:\PowerShell> .\cross.ps1 SWORD
S       D
  W   R
    O
  W   R
S       D


2

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

f=s=>[...s].map((_,i,a)=>a.map((c,j)=>j==i|j==s.length+~i?c:' ').join` `).join`
`

সম্পাদনা : -১ ধন্যবাদ জো কিং। আমি টিআইও সিজির জন্য প্রম্পটমেন্টযুক্ত সরাসরি পেস্ট দেয় তা দেখিনি।

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


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

-i-1হতে পারে+~i
জো কিং

1

সি # 208

static void Main()
{
string s=Console.ReadLine(),t="";
int n=s.Length;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(i==j)t+=s[i];
else if(i==n-j-1)t+=s[n-i-1];
t+=" ";
}
t+="\n";
}
Console.WriteLine(t);
}

এর সাথে 11 মূল্যবান অক্ষর সংরক্ষণ করুন t+=i==j?s[i]:i==n-j-1?s[n-i-1]:"";
সাম্পাথিস্রিস

আপনি কি এই নতুনলাইনগুলি সরাতে পারবেন?
জাকারি


1

যতক্ষণ না, সবসময় একটি উত্তর হতে হবে ...

জাভা - 289 234 বাইট

public static void main(String[]a){int l=a.length-1,i=0,j;for(;i<=l;i++){for(j=0;j<=l;j++){if(j==i)System.out.print(a[i]);else if(i==l-j)System.out.print(a[j]);else System.out.print(" ");System.out.print(" ");}System.out.println();}}}

Ungolfed:

    class A {

    public static void main(String[] a) {
        int l = a.length - 1, i = 0, j;
        for (; i <= l; i++) {
            for (j=0; j <= l;j++) {
                if (j == i)
                    System.out.print(a[i]);
                else if (i == l-j)
                    System.out.print(a[j]);
                else
                    System.out.print(" ");
                System.out.print(" ");
                }            
            System.out.println();
        }
    }
}

আউটপুট, স্বাচ্ছন্দ্যে সম্পন্ন, হ'ল:

P           M 
  R       A   
    O   R     
      G       
    O   R     
  R       A   
P           M 

কোডটির import java.util.Scannerঅভ্যন্তরীণ অংশটি যুক্ত করা হয়েছে কারণ আমদানিগুলি বাইট গণনার দিকে গণনা করে কিনা আমি কখনই মনে করি না ... ড্যাম, আমি সত্যিই এটিকে স্তন্যপান করি।


2
আমদানি গণনা করা। এটি আংশিকভাবে পাইথনের আমদানি-এবং-উপন্যাস সিনট্যাক্সের কারণে: from math import floor as fযা কিছুটা ঠকাই

কয়েকটি System.out.printকল টু ওয়ার্ল্ড অপারেটর ব্যবহার করে সমস্ত কলকে এক সাথে সংযুক্ত করে আপনার একাধিক অক্ষর সংরক্ষণ করতে সক্ষম হওয়া উচিত ।
DLosc

@DLosc আপনি কি আমাকে কয়েকটি উদাহরণ দিতে পারেন?
রোডল্ফো ডায়াস

1
হ্যাঁ, আসলে জিওবিটসের উত্তরটি একটি নিখুঁত উদাহরণ - System.out.printকলটির সামগ্রীগুলি শেষে দেখুন।
DLosc

1
পুনঃটুইট করুন জাভাতে আমার প্রথম কয়েকটি গল্ফগুলি ভয়াবহ ছিল , এবং আমি যদি খুব শক্ত দেখি তবে আমি সাধারণত "আমার প্রথম সংশোধন" বন্ধ করে দিতে পারি;)
জিওবিটস অক্টোব

1

সি # (192/170)

using System;class P{static void Main(){var s=Console.ReadLine();int x,y,l=s.Length;for(x=0;x<l;x++){for(y=0;y<l;y++)Console.Write(x==y||l-x==y+1?s.Substring(x,1):" ");Console.Write("\n");};}}

বা, "কেবলমাত্র প্রধান" হিসাবে:

static void Main(){var s=Console.ReadLine();int x,y,l=s.Length;for(x=0;x<l;x++){for(y=0;y<l;y++)Console.Write(x==y||l-x==y+1?s.Substring(x,1):" ");Console.Write("\n");};}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.