একটি ত্রিভুজীকরণ প্রোগ্রামটি বৈধ করুন


19

ট্রায়াঙ্গুলারিটি মিঃ এক্সকোডার দ্বারা নির্মিত একটি নতুন এসোলেং যেখানে কোড স্ট্রাকচারকে খুব নির্দিষ্ট প্যাটার্ন অনুসরণ করতে হবে:

  • জন্য nকোডের তম লাইন, সেখানে ঠিক হতে হবে 2n-1এটা প্রোগ্রামের অক্ষর। এটি ত্রিভুজাকার / পিরামিড আকৃতির কারণ ঘটায়, প্রথম লাইনে কেবল একটি অক্ষর থাকে এবং বাকীটি 2 এর বৃদ্ধি দিয়ে বৃদ্ধি পায়।
  • প্রতিটি লাইন অবশ্যই .বাম এবং ডানে s দিয়ে প্যাড করা আবশ্যক , যেমন অক্ষরগুলি তাদের রেখাগুলিকে কেন্দ্র করে এবং সমস্ত লাইন একই দৈর্ঘ্যে প্যাড করা থাকে। যদি lপ্রোগ্রামে লাইন নম্বর হিসাবে সংজ্ঞায়িত করা হয়, প্রোগ্রাম প্রতিটি লাইনের দৈর্ঘ্য থাকতে হবে2 * l - 1

উদাহরণস্বরূপ, বাম দিকে প্রোগ্রামটি বৈধ, তবে ডানদিকে থাকা প্রোগ্রামটি এটি নয়:

 Valid    |  Invalid  
          |
...A...   |  ABCDE
..BCD..   |  FGH
.EFGHI.   |  IJKLMN
JKLMNOP   |  OPQRS

বৈধ কাঠামোতে রাখলে নামটি স্পষ্ট হয়।

কার্য

আপনার কাজটি হ'ল ইনপুট হিসাবে একটি একক লাইন স্ট্রিং গ্রহণ করা, ত্রিভুজাকরতা কোড উপস্থাপন করা এবং আউটপুট এটি বৈধ কোডে রূপান্তরিত হিসাবে উপরে বর্ণিত।

I / O এর জন্য বিশেষ উল্লেখ:

  • ইনপুটটিতে কেবলমাত্র ব্যাপ্তির অক্ষর থাকবে 0x20 - 0x7e
  • ইনপুটটির দৈর্ঘ্য সর্বদা একটি বর্গ সংখ্যা হবে এবং এইভাবে সুন্দরভাবে প্যাডেবল হবে।
  • আউটপুট প্যাডিংয়ের জন্য আপনাকে অবশ্যই বিন্দু ব্যবহার করতে হবে, অন্য কিছু নয়।

আপনি যে কোনও গ্রহণযোগ্য পদ্ধতির মাধ্যমে ইনপুট এবং আউটপুট দিতে পারেন । এটি একটি তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়!

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

input
----
output

g
----
g

PcSa
----
.P.
cSa

DfJ0vCq7G
----
..D..
.fJ0.
vCq7G

7xsB8a1Oqw5fhHX0
----
...7...
..xsB..
.8a1Oq.
w5fhHX0

QNYATbkX2sKZ6IuOmofwhgaef
----
....Q....
...NYA...
..TbkX2..
.sKZ6IuO.
mofwhgaef

ABCDEF"$%& G8"F@
----
...A...
..BCD..
.EF"$%.
& G8"F@

ab.c
----
.a.
b.c

যারা ত্রিভুজ্যতা জানেন তাদের জন্য আপনি সর্বশেষ পরীক্ষার কেসটি থেকে লক্ষ্য করবেন যে স্ট্রিংগুলি পরিচালনা করতে হবে না



13
আমি বুঝতে পারি এটি সম্ভবত নিরর্থক, তবে নীচের লোকেরা কি তাদের ভোটের ব্যাখ্যা দেবে? আমি যাই হোক না কেন চ্যালেঞ্জ উন্নত করতে চাই।
কেয়ার্ড কইনিরিংহিংহিং

নেতৃস্থানীয় বা অনুসরণযোগ্য নিউলাইন গ্রহণযোগ্য?
আর্নৌল্ড

@ আরনাউল্ড হ্যাঁ, শীর্ষস্থানীয় এবং অনুসরণযোগ্য সাদা স্থান পুরোপুরি ঠিক।
কেয়ার্ড কইনিরিংহিংহিং

লাইনের তালিকা কি ঠিক আছে?
মিঃ এক্সকডার

উত্তর:


19

ত্রিভুজ্যতা , 127 বাইট

.......).......
......2)1......
...../)IL^.....
....f)rMD@_....
...)2)1/)IL^...
..f+`"'.'*"+E..
.DWReD)2s^)Its.
D+@sh+s+})10cJ.

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

ব্যাখ্যা

প্যাডিংয়ের জন্য তৈরি করা অক্ষরগুলি সরিয়ে, আমরা নিম্নলিখিত প্রোগ্রামটি পাই:

)2)1/)IL^f)rMD@_)2)1/)IL^f+`"'.'*"+EDWReD)2s^)ItsD+@sh+s+})10cJ

... কোনটি বেশ দৈর্ঘ্য ইশ, তাই না? এর টুকরো টুকরো টুকরো টুকরো টুকরো করা যাক।

পূর্ণসংখ্যা তৈরি করা হচ্ছে [0… ইলেন (ইনপুট))

)2)1/)IL^f)r – Subprogram #1.
)            – Creates a new stack entry, equal to 0. This must precede any integer
               literal, because each character in '0123456789' isn't parsed on its
               own as a literal, but rather they are commands which multiply the ToS
               by 10 and add the value of their digit equivalent. 
 2           – ToS * 10 + 2 = 2.           || STACK: [2]
  )1         – The literal 1.              || STACK: [2, 1]
    /        – Division.                   || STACK: [1 / 2] = [0.5]
     )I      – Get the input at index 0.   || STACK: [0.5, input]
       L     – Length.                     || STACK: [0.5, len(input)]
        ^    – Exponentiation.             || STACK: [len(input) ** 0.5]
         f   – Trim decimals.              || STACK: [int(len(input) ** 0.5)] 
          )r – Create the list [0 .. ToS). || STACK: [[0 ... int(len(input) ** 0.5))]

বিন্দুগুলি তৈরি করা হচ্ছে

MD@_)2)1/)IL^f+`"'.'*"+E – Subprogram #2.
MD                       – For each integer in the range, run some code on a separate
                           stack, preinitialised to two copies of the argument.
  @_                     – Increment and negate the ToS.
    )2)1/)IL^f           – The square root of the length of the input, again.
              +          – Add the two.
               `         – And cast the integer given to a string.
                "'.'*"+  – Prepends the literal "'.'*" to the string representation.
                       E – Evaluate as a Python expression (basically string repetition).

সামনে অক্ষর ছাঁটাই

DWReD)2s^)It – Subprogram #3.
D            – Duplicate the result of the expression above.
 W           – Wrap the whole intermediate stack to an array.
  Re         – Reverse the stack and dump the contents separately onto the stack.
    D        – Duplicate the result.
     )2      – Push the literal 2.
       s^    – Swap and perform exponentiation.
         )It – Push the input and trim the characters before that index.

চরিত্রগুলি শেষে ছাঁটাই করা হচ্ছে

sD+@sh+s+ – Subprogram #4.
s         – Swap the top two elements on the stack.
 D+       – Double. Push twice and add.
   @      – Increment.
    sh    – Swap the top two elements and trim the characters after that index.
      +   – Append the first set of dots.
       s+ – And prepend the second set of dots.

লুপ শেষ এবং সুন্দর মুদ্রণ

})10cJ – Subprogram #5.
}      – End the loop.
 )10   – Push the literal 10.
    c  – Convert from code-point to character (yields '\n').
     J – And join the result by newlines.

"" এর জন্য কি আপনাকে বাইট করতে হবে? " অক্ষরগুলি যদি ভাষার অন্তর্নিবেশ দ্বারা বাধ্যতামূলক হয়?
জেডিএল

@ জেডিএল হ্যাঁ, প্রোগ্রামগুলি তাদের ব্যতীত সঠিকভাবে চলতে পারে না, সুতরাং আমি অবশ্যই এগুলি অবশ্যই বাইট গণনায় অন্তর্ভুক্ত করব :-)
জনাব এক্সকডার

ইনপুটটির দৈর্ঘ্য বর্গক্ষেত্রের গ্যারান্টিযুক্ত হিসাবে দেখে আপনার কি "দশমিক ছাঁটাই" করা দরকার? আপনি Jশেষে রড পেতে সক্ষম হতে হবে এবং লাইনগুলির একটি অ্যারে আউটপুট করে। জানি না যে এটি আপনাকে কিছু বাঁচাতে চলেছে, যদিও, যদি শেষ লাইনের শেষ অংশটি .বাকী স্থানটি পূরণ করার জন্য প্যাড করা দরকার।
শেগি

1
@ শেগি ১) হ্যাঁ, fপ্রয়োজন কারণ পরিসরটি ভাসমান যুক্তি (এমনকি সহ .0) গ্রহণ করতে পারে না 2) Jপ্যাডিংয়ের কারণে কোনও বাইট সংরক্ষণ করতে পারে না, তাই আমি প্রিটিয়ার আউটপুট ফর্ম্যাটটি বেছে নিয়েছি।
মিঃ এক্সকোডার

8

জাপট , 15 14 10 বাইট

লাইনের একটি অ্যারে আউটপুট করে।

ò@°T¬v1Ãû.

চেষ্টা করে দেখুন | সমস্ত পরীক্ষার কেস পরীক্ষা করুন


Explantion

ò@     Ã       :Partition at characters where the following function returns true
  °T           :  Increment T (initially 0)
    ¬          :  Square root
     v1        :  Divisible by 1?
               :(Or, in other words, split after every character with a 1-based index that's a perfect square)
        û.     :Centre pad each element with .s to the length of the longest element

মূল সমাধান

ʬÆsTT±X+°XÃû.

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

Ê                  :Length of input
 ¬                 :Square root
  Æ        à       :Range [0,ʬ) and pass each X through a function
   s               :  Slice input
    T              :    from index T, initially 0
     T±X+°X        :    to index T incremented by X plus X incremented
            û.     :Centre pad each element with .s to the length of the longest element

7

হুশ , 15 বাইট

Ṡzö`JR2tR'.ṡCİ1

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

ব্যাখ্যা

Ṡzö`JR2tR'.ṡCİ1  Implicit input, say s = "DfJ0vCq7G".
             İ1  List of odd positive integers: [1,3,5,7,..
            C    Cut s to those lengths: x = ["D","fJ0","vCq7G"]
           ṡ     Reversed indices of x: y = [3,2,1]
Ṡz               Zip x and y using this function:
                  Arguments are a string and a number, e.g. r = "fJ0" and n = 2.
        R'.       n copies of '.': ".."
       t          Drop first element: "."
     R2           Two copies of this: [".","."]
  ö`J             Join by r: ".fJ0."
                 Result is ["..D..",".fJ0.","vCq7G"]; implicitly print on separate lines.

7

05 এ বি 1 ই , 20 19 18 বাইট

ম্যাজিক অক্টোপাস উরনের কাছে একটি বাইট ধন্যবাদ সংরক্ষণ করা

ā·<£õKRvy'.N×.ø}r»

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

ব্যাখ্যা

ā                    # push the list [1 ... len(input)]
 ·<                  # multiply each by 2 and decrement each, making a list of odd numbers
   £                 # split the input into chunks of these sizes
    õK               # remove empty strings
      R              # reverse list
       vy      }     # for each y in the list
             .ø      # surround it with
         '.N×        # "." (dot) repeated N times, where N is the current iteration index
                r    # reverse the stack
                 »   # join stack by newlines

ÅÉপ্রতিক্রিয়া সাহায্য করতে পারে?
ম্যাজিক অক্টোপাস উরন

এরকম কিছু g;ÅÉ£Rvy'.N×.ø}r»,? তবে তা নয় কারণ এটি সঠিক লোভ নয়।
ম্যাজিক অক্টোপাস উরন

@ ম্যাজিক অ্যাক্টোপাস উর্ন: ÅÉআমরা নীচে সারিটির দৈর্ঘ্য 2 বাইটের মধ্যে খুঁজে পেতে পারলে অবশ্যই সাহায্য করবে। জানি না আমরা পারব কিনা। এটির সাথে যুক্ত হওয়ার অন্য উপায়ও হতে পারে।
এমিগিনা

@ ম্যাজিক অ্যাক্টোপাস উর্ন: আমার আগে একই সমাধান হয়েছিল আমি এর )Rপরিবর্তে ব্যবহার করেছি যার পরিবর্তে rকোনও বাইট সংরক্ষণ করা হয়নি: /
এমিগানা

আমি "লুপটি বিপরীতমুখী করার" উপায়টি সন্ধান করার চেষ্টা করছিলাম ঠিক যেমনটি ঘটেছিল তেমন মুদ্রণের জন্য, যদিও সে সম্পর্কে কোনও ধারণা নেই।
ম্যাজিক অক্টোপাস উরন


5

জেলি ,  22  19 বাইট

J²‘Ṭœṗ⁸Ṛz”.Zµṙ"JC$Ṛ

অক্ষরের তালিকাগুলির তালিকা (রেখাগুলি) ফিরিয়ে দেওয়া একটি মোনাডিক লিঙ্ক

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

কিভাবে?

J²‘Ṭœṗ⁸Ṛz”.Zµṙ"JC$Ṛ - Link: list of characters e.g. "DfJ0vCq7G"
J                   - range of length               [1,2,3,4,5,6,7,8,9]
 ²                  - square (vectorises)           [1,4,9,16,25,36,49,64,81]
  ‘                 - increment                     [2,5,10,17,26,37,50,65,82]
   Ṭ                - untruth (1s at those indices) [0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,...]
      ⁸             - chain's left argument         "DfJ0vCq7G"
    œṗ              - partition at indexes          ["D","fJ0","vCq7G"]
       Ṛ            - reverse                       ["vCq7G","fJ0","D"]
         ”.         - literal '.'                   '.'
        z           - transpose with filler         ["vfD","CJ.","q0.","7..","G.."]
           Z        - transpose                     ["vCq7G","fJ0..","D...."]
            µ       - start a new monadic chain
                 $  - last two links as a monad:
               J    -   range of length             [1,2,3]
                C   -   complement (vectorises)     [0,-1,-2]
              "     - zip with:
             ṙ      -   rotate left by              ["vCq7G",".fJ0.","..D.."]
                  Ṛ - reverse                       ["..D..",".fJ0.","vCq7G"]

5

জাভাস্ক্রিপ্ট (ES7), 82 78 বাইট

f=(s,k=1-s.length**.5*2,p='')=>s&&f(s.slice(0,k),k+2,p+'.')+`
`+p+s.slice(k)+p

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

মন্তব্য

f = (                       // f = recursive function taking:
  s,                        //   s = input string
  k = 1 - s.length**.5 * 2, //   k = additive inverse of the length of the base
  p = ''                    //   p = padding string
) =>                        //
  s &&                      // if s is not empty:
    f(                      //   do a recursive call with:
      s.slice(0, k),        //     s without the last -k characters
      k + 2,                //     the updated base length (2 less characters)
      p + '.'               //     the updated padding string
    ) +                     //   end of recursive call()
    `\n` +                  //   append a line feed
    p +                     //   append the left padding string
    s.slice(k) +            //   append the last -k characters of s
    p                       //   append the right padding string

[অপ্রাপ্তবয়স্ক] উপরের কোড ব্লকে '/ এন' চিহ্নটি একটি প্রকৃত লাইন বিরতিতে পরিণত হয়েছে - স্বচ্ছতার জন্য
এড়িয়ে চলার

@ G0BLiN এই অন্য উপায় কাছাকাছি হয়: এই হল প্রকৃতপক্ষে golfed কোড, যা স্বচ্ছতার জন্য ungolfed সংস্করণে একটি পলান লাইন বিরতি প্রতিস্থাপন করা হয়েছে একটি আক্ষরিক লাইন বিরতি। :)
আর্নল্ড

হা, রসিকতা আমার উপর, তারপরে ... :-)
G0BLiN


2

এমএটিএল , 21 বাইট

tnX^eRP&1ZvGyg(46y~(!

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

ব্যাখ্যা

'DfJ0vCq7G'উদাহরণ হিসাবে ইনপুট বিবেচনা করুন । স্ট্যাকের বিষয়বস্তুগুলি কমা দ্বারা পৃথক করে দেখানো হয়েছে, শীর্ষ উপাদানটি সর্বশেষে রয়েছে। 2D অ্যারেতে থাকা সারিগুলি সেমিকোলনকে বিভাজক হিসাবে ব্যবহার করে।

t      % Implicit input: string. Duplicate
       % STACK: 'DfJ0vCq7G',
                'DfJ0vCq7G'
nX^    % Number of elements. Square root
       % STACK: 'DfJ0vCq7G',
                3
e      % Reshape with that many rows (in column major order)
       % STACK: ['D0q';
                 'fv7';
                 'JCG']
R      % Upper triangular part: set elements below diagonal to char(0)
       % (displayed as space)
       % STACK: ['D0q';
                 ' v7';
                 '  G']
P      % Flip vertically
       % STACK: ['  G';
                 ' v7';
                 'D0q']
&1Zv   % Reflect vertically
       % STACK: ['  G';
                 ' v7';
                 'D0q';
                 ' v7';
                 '  G']
G      % Push input again
       % STACK: ['  G';
                 ' v7';
                 'D0q';
                 ' v7';
                 '  G'],
                'DfJ0vCq7G'
yg     % Duplicate from below and convert to logical. This gives true for
       % for nonzero chars (the entries where input chars will be written)
       % STACK: ['  G';
                 ' v7';
                 'D0q';
                 ' v7';
                 '  G'],
                'DfJ0vCq7G',
                [0 0 1;
                 0 1 1;
                 1 1 1;
                 0 1 1;
                 0 0 1]
(      % Assignment indexing: write values at those positions
       % STACK: ['  v';
                 ' fC';
                 'DJq';
                 ' 07';
                 '  G']
46     % Push 46, which is ASCII for '.'
       % STACK: ['  v';
                 ' fC';
                 'DJq';
                 ' 07';
                 '  G'],
                 46
y~     % Duplicate from below and apply logical negate. This gives true
       % for char(0) (the entries where '.' will be written)
       % STACK: ['  G';
                 ' v7';
                 'D0q';
                 ' v7';
                 '  G'],
                46
                [1 1 0;
                 1 0 0;
                 0 0 0;
                 1 0 0;
                 1 1 0]
(      % Assignment indexing: write value at those positions
       % STACK: ['..G';
                 '.v7';
                 'D0q';
                 '.v7';
                 '..G'],
!      % Transpose. Implicit display
       % STACK: ['..D..';
                 '.fJ0.';
                 'vCq7G']



1

পার্ল, 56 52 বাইট

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

#!/usr/bin/perl -p
$_=("."x y///c**.5)=~s%.%$'@{[$&x/$`$`./g]}$'
%rg

STDIN এ ইনপুট দিন (নীতিগতভাবে চূড়ান্ত নিউলাইন ছাড়া, তবে এটি কেবল খালি ইনপুটটির জন্য গুরুত্বপূর্ণ)


1
পিসিজি নিয়ম অনুসারে -pব্যয় হয় কেবল 1 বাইট
মিক

@ এমিক কেবল কোডটি না থাকলে '। তবে এই কোডটি করে তাই এটি একটি ফাইল (বা কমান্ডলাইনে পলায়ন) রাখতে হবে যা সাধারণ #!লাইনের তুলনায় 3 অতিরিক্ত অক্ষর প্রয়োজন । সুতরাং এই ক্ষেত্রে এটি হ'ল +3(সাধারণ কোডের জন্য আপনি দেখতে পাচ্ছেন আমি কেবলমাত্র +p
এটির

1

লাল , 227 203 বাইট

f: func[s][l: to-integer(length? s)** 0.5
n: 0 foreach m parse s[collect[(r: []repeat i l[append r reduce['keep i * 2 - 1
charset[not{Я}]]])r]][v: copy""insert/dup v"."l - n: n + 1 print rejoin[v m v]]]

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

Ungolfed:

f: func[s][
l: to-integer (length? s) ** 0.5
n: 0
foreach m parse s [ 
    collect [
        (r: []
        repeat i l [ append r reduce [
            'keep i * 2 - 1 charset [ not{Я} ]]])
    r ]] 
    [v: copy ""
    insert/dup v "." l - n: n + 1
    print rejoin [v m v]]
]

1

রেটিনা , 88 72 71 বাইট

S1`
+m`^(.)+¶(?>(?<-1>.)+)..(?!¶)
$&¶
P^'.m`^.(?=(..)*)(?<-1>.)*
P'.`.+

এটি অনলাইন চেষ্টা করুন! সম্পাদনা করুন: 12 মার্টিনইেন্ডারে 12 13 বাইট সংরক্ষণ করা হয়েছে। ব্যাখ্যা:

S1`

বল রোলিং পেতে প্রথম অক্ষরটিকে তার নিজস্ব লাইনে বিভক্ত করুন।

+m`^(.)+¶(?>(?<-1>.)+)..(?!¶)
$&¶

প্রতিটি রেখাকে আগের অক্ষরের চেয়ে দুটি অক্ষর দীর্ঘ করুন।

P^'.m`^.(?=(..)*)(?<-1>.)*

প্রতিটি লাইনের প্রথমার্ধকে বাম-প্যাড করুন, কার্যকরভাবে সেগুলি কেন্দ্র করে।

P'.`.+

লাইন সব ডান প্যাড।


1

কাঠকয়লা , 21 19 বাইট

UB.F₂Lθ«P✂θXι²X⊕ι²↙

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। সম্পাদনা করুন: আবিষ্কার করে 2 বাইট সংরক্ষণ করা হয়েছে SquareRoot। ব্যাখ্যা:

UB.                 Set the background fill to `.`
      θ             (First) input
     L              Length
    ₂               Square root
   F   «            Loop over implicit range
            ι   ι   Current value
               ⊕    Incremented
             ²   ²  Literal 2
           X  X     Power
         ✂θ         Slice the (first) input string
        P           Print without moving the cursor
                  ↙ Move down left

: / এটি প্রায় কাজ করে তবে এটি চারকোলটি কিছুটা বগি appears যদিও এটি কাজ করে, আমার মনে হয়?
ASCII- কেবল

@ এএসসিআইআই-কেবল ... এটি কি কালো যাদু?
নিল

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

এটি ঠিকভাবে পরবর্তী টানা কাজ করবে
এএসসিআইআই-



0

রুবি , 73 66 বাইট

->s{(1..z=s.size**0.5).map{|q|s[q*q-2*q+1...q*q].center 2*z-1,?.}}

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

-5 বাইট: স্ট্রিংগুলি মুদ্রণের পরিবর্তে একটি অ্যারে ফিরুন

-২ বাইট: zসময়ের পরিবর্তে জায়গায় ঘোষণা করুন

Ungolfed:

->s{
  (1..z=s.size**0.5).map{|q|   # Map the range [1,sqrt(s.size)]
    s[q*q-2*q+1...q*q]         # To the relevant portion of s,
      .center 2*z-1, ?.        #   padded left and right with . characters
  }
}

একটি ভেরিয়েবল ঘোষণা করা r=q-1যাতে আমি s[r*r...q*q]ঠিক শূন্য বাইট সংরক্ষণ করতে পারি ।

.centerপ্যাডিংয়ের পরিবর্তে ম্যানুয়ালি ব্যবহার করাও শূন্য বাইট সংরক্ষণ করে, তবে আমি এটি আরও ভাল পছন্দ করি।


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