পয়েন্টার, পয়েন্টার, পয়েন্টার!


46

ভূমিকা

জাভা যেমন কিছু ভাষার ত্রুটি আউটপুটগুলিতে প্রোগ্রামারকে ত্রুটিটি কোথায় ভুল হয়েছে ঠিক তার ধারণা দেওয়ার জন্য একটি পয়েন্টার দেখানো হয়।

নিন এই উদাহরণে Ideone করুন:

Main.java:12: error: ';' expected
    Invalid Java!
                ^

ক্যারেট দেখায় অবৈধ কোডটি কোথায়?

চ্যালেঞ্জ

তোমার চ্যালেঞ্জ: প্রদত্ত সংখ্যার এন ও সুতো এস , একটি পয়েন্টার স্থাপন এন ম চরিত্র এস

উদাহরণ

ইনপুট :2, "Lorem ipsum, dollar sit amet."

আউটপুট :

Lorem ipsum, dollar sit amet.
 ^

বিধি

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

16
আমি মনে করি এটি একটি অতি সাধারণ সমস্যা, সুতরাং আমি নিশ্চিত নই যে এটি অত্যধিকভাবে গ্রহণ করা হবে। আপনি চেষ্টা করতে পারেন স্যান্ডবক্স একবার আপনি যথেষ্ট প্রতিনিধির আছে।
FryAmTheEggman

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

3
আমি যেমন বলেছিলাম, বিড়ালটি সম্ভবত এই একের ব্যাগ থেকে বেরিয়ে এসেছে। বৈধ উত্তর পোস্ট হওয়ার পরে নিয়ম পরিবর্তনগুলি সাধারণত ভাল কাজ করে না। লাইভ এবং শিখুন;)
Geobits

1
@ সোহমচৌধুরী আমি ভেবে দেখব যে ইচ্ছাকৃত ছিল;) আপনি কি আমাকে এটি ঠিক করতে চান?
monkeyonkeyboard

9
যদিও এটি খুব সহজ হতে পারে, আপনি অবশ্যই প্রথম চ্যালেঞ্জের জন্য ভাল করেছেন! আপনার কাছে + 16 / -0 ভোট, 1,300 বার দেখা, এবং ২৮ টি উত্তর (এই লেখা হিসাবে) এবং আপনি হট নেটওয়ার্ক প্রশ্নগুলির তালিকা তৈরি করেছেন। সুন্দর কাজ!
অ্যালেক্স এ।

উত্তর:


36

সি 33

যদি কেবল কোনও ফাংশন অনুমোদিত হয়, তবে সি এমনকি প্রতিযোগিতা করতে পারে।

(রেকর্ডের জন্য, 2 বাইট @ কুল গাইয়ের কাছে thx সাশ্রয় করেছে। মন্ট থেক্স মন্তব্যটি অপ্রত্যাশিতভাবে বাষ্পীভবন হয়))

আরও 1 টি চর সংরক্ষণ করা হয়েছে thx @ মিগ

f(a,c){printf("%s\n%*c",a,c,94);}

19
সি সর্বদা প্রতিযোগিতা করতে পারে, এটি সবসময় জিততে পারে না। ;)
অ্যালেক্স এ।

3
@AlexA। <shrug> এটি আমার কাছে বিজয়ী মনে হচ্ছে ;-)
ডিজিটাল ট্রমা

3
1 চর সংরক্ষণ করুন:f(a,c){printf("%s\n%*c",a,c,94);}
মাইকেল এম।

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

35

ব্রেনফ * সিকে - 133 বাইট

+++++>>+>>+++>>+++++++++<<<<<<[[->++++++++++<]>>]<++++<<++<<<<--<,>[->+<<->]>>>,<<[->>-<<]<<[->>>>++++++++++<<<<]>>+[,.]>.>[->.<]>>>.

[0-9]{2}.*যেমন ইনপুট আশা করে "02 হেলো বিশ্ব !!!" উত্পাদন করা হবে

ওহে বিশ্ব!!!
 ^

প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! এটি একটি দুর্দান্ত প্রথম পোস্ট, চমৎকার কাজ! : ডি
অ্যালেক্স এ।

সমস্যাটি হ'ল, কেউ এটি জানে না যে এটি এমনকি বৈধ কোড কিনা, সমস্যাটি সমাধান করুন একা :)
সাইমন

হ্যাঁ আমি এখানে একটি বাই বাইরের ত্রুটি বলে মনে করি। eউদাহরণস্বরূপ ক্যারেটটি নীচে থাকা উচিত । 1 বাইটের মূল্যে এটিকে -সামনের দিকে যোগ করে স্থির করা যেতে পারে[->.<]
ফ্রাইএইমডিজম্যান

@ ফ্রাইআমএইজিগম্যান আপনি ঠিক বলেছেন - সম্পাদনাটি দেখুন। আমার কাছে এটি এখন ইয়ের মতো মূলত ছিল তবে আমি বিভিন্ন ফন্টের সাহায্যে দুটি আইডিই ব্যবহার করে বিভ্রান্ত হয়ে পড়েছিলাম।
sudo rm -rf স্ল্যাশ

25

আইএ -32 মেশিন কোড, 24 বাইট

Hexdump:

66 b8 5e 00 42 38 22 75 fb 66 c7 02 0d 0a 42 42
c6 02 20 e2 fa 89 02 c3

এটি একটি ফাংশন (এমএস fastcallকনভেনশন ব্যবহার করে ) যা জায়গায় জায়গায় স্ট্রিং আপডেট করে:

__declspec(naked) void __fastcall carrot(int n, char* s)

সমাবেশ কোড:

    mov ax, '^'; // ah = 0, al = '^'

mystrlen:
    inc edx;
    cmp [edx], ah;
    jne mystrlen;

    mov word ptr [edx], '\r\n'; // append a newline
    inc edx;

mymemset:
    inc edx;
    mov byte ptr [edx], ' ';
    loop mymemset;

    mov [edx], eax; // append a caret and terminate the string
    ret;

এটি WORDকয়েকটি জায়গায় আকারযুক্ত (16-বিট) ডেটা ব্যবহার করে । এটি 32-বিট কোডে একটি পেনাল্টি (1-বাইট উপসর্গ) রয়েছে তবে কোডটি যাইহোক ছোট করে তোলে - 32-বিট ডেটা ব্যবহার করে কোডে দুটি শূন্য বাইট লাগবে!

শেষে, এটি 2 বাইট ( eax) এর পরিবর্তে 4 বাইট ( ) লিখেছে ax- কোডটি সেভাবে ছোট, এবং জাঙ্কের 2 অতিরিক্ত বাইট স্ট্রিং সমাপ্তির পরে চলেছে, তাই কেউ তাদের লক্ষ্য করে না।

ব্যবহার:

int main()
{
    char s[100] = "Lorem ipsum, euro sit amet.";
    carrot(2, s); // credit to Digital Trauma for the name
    puts(s);
}

1
নির্দেশ 66 b8 5e 00প্যাচসমূহ 0x5eকরতে al, না ah, এবং শূন্য ahপরিবর্তে al, তাই সমাবেশ কোডে আপনার মন্তব্য বিভ্রান্তিকর করা হয়।
Ruslan

@ রুসলান ধন্যবাদ! সংশোধন করা হয়েছে। এটি পূর্ববর্তী সংস্করণ থেকে একটি অবশিষ্টাংশ ছিল।
অ্যানাটলিগ

nakedসেখানে কেন ? এবং কেন আমি প্রথম জিনিসটি দেখেছি?
21

এটা তোলে মাইক্রোসফট যে করা করার সিদ্ধান্ত নিয়েছে এর naked: সামনে msdn.microsoft.com/en-us/library/h5w10wxs.aspx
anatolyg

20

পাইথ , ৮

zp\^*tQd

এই সমাধানটি আর কাজ করে না, যেহেতু আমি ভাষার নাম হিসাবে যুক্ত হয়েছিলে তার পরে প্রতিশ্রুতিবদ্ধতাটি pআর্টি হয়ে উঠেছে 1.. পাইথের অনুরূপ স্কোর অর্জনের আরও বেশ কয়েকটি উপায় রয়েছে যা আজও কাজ করে, যেমন zp+*dQ\^

যদি স্ট্রিংটির vকোডের প্রয়োজন হয়, কোডের শুরুতে যুক্ত করে। যদি এটি কমাটি আলাদা করতে হয় তবে এটি 10 ​​বাইটে চলে যায়:

eQp\^*dthQ

আমি মনে করি এটি এখন পর্যন্ত সংক্ষিপ্ততম। সাবাশ.
monkeyonkeyboard

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

1
@ জিম এই উত্তরটি পাইথের একটি পুরানো সংস্করণ ব্যবহার করেছে, যেখানে আধ্যাত্মিকতা pছিল 1. এটি আউটপুটটির প্রথম লাইনটি প্রথম মুদ্রণ করে এবং তারপরে ফাঁকা স্থানগুলির পরে পরবর্তী লাইনে ক্যারেট তৈরি করে। এখন আপনি z+*dQ\^একটি সংক্ষিপ্ত স্কোরের জন্য করতে পারবেন তবে একটি পিছনের নিউলাইন দিয়ে বা এটি অপসারণের pআগে একটি যোগ +করতে পারেন। আমি এখানে কী করব সে সম্পর্কে আমি নিশ্চিত নই, যেহেতু লোকেরা উত্তরের এই সংস্করণটিকে অগ্রাহ্য করেছে, তাই আমি মনে করি যে এটিতে যে সংস্করণটি কাজ হয়েছিল সেগুলি অনুসন্ধান করার চেষ্টা করব।
FryAmTheEggman

16

টি এসকিউএল, 90

মোটামুটি সহজ প্রশ্ন থাকা সত্ত্বেও, এই ভাষাগুলিতে এগুলি চেষ্টা করা সবসময় আকর্ষণীয় যেগুলি সত্যই তাদের পক্ষে ভালভাবে সমর্থন করে না বা এই বিষয়টির জন্য গল্ফকে ভালভাবে প্রবণ করে না।

এই উত্তরটি প্রায় দীর্ঘতম হওয়ার নিশ্চয়তা রয়েছে।

এটি এসকিউএল সার্ভারের জন্য একটি ইনলাইন টেবিল ফাংশন তৈরি করে যা @n এবং @ কে প্যারামিটার হিসাবে নেয় এবং ফলাফলগুলি কলাম হিসাবে প্রত্যাবর্তন করে। গাড়ীর রিটার্নটি উল্লেখযোগ্য, অন্যথায় আমার চর (13) ব্যবহার করতে হবে।

CREATE FUNCTION G(@N INT,@ VARCHAR(MAX))RETURNS TABLE RETURN SELECT @+'
'+SPACE(@n-1)+'^'R

এটি নিম্নলিখিত পদ্ধতিতে ব্যবহৃত হয়

SELECT R 
FROM (VALUES
    (1,'This is test 1'),
    (2,'This is test 2'),
    (3,'This is test 3'),
    (4,'This is test 4'),
    (5,'This is test 5')
    )T(n,S)
    CROSS APPLY G(n,S)

এবং ফিরে

R
---------------
This is test 1
^
This is test 2
 ^
This is test 3
  ^
This is test 4
   ^
This is test 5
    ^

গল্ফিংয়ের জন্য সত্যই ডিজাইন করা হয়নি এমন ভাষার খুব সৃজনশীল ব্যবহার;) +1
বানরকিবোর্ড

14

পাইথন, 27

lambda n,s:s+'\n%%%dc'%n%94

এটি স্ট্রিং ফর্ম্যাটিংয়ের দুটি স্তরের ব্যবহার করে।

এবং এখানে একটি 25 বাইট সমাধান আংশিকভাবে ফেয়ারসামের উত্তর থেকে চুরি করা হয়েছে (যুক্তি আদেশটি বিপরীত করে):

lambda*p:'%s\n%%%dc'%p%94

12

বাশ, 27

printf %s\\n%$[$1-1]s^ "$2"

আউটপুট

$ ./carrot.sh 2 "Lorem ipsum, dollar sit amet."
Lorem ipsum, dollar sit amet.
 ^$ 

গাজর? এছাড়াও, ডলার শেষে কি?
স্কিমনস্টার

7
ডলারটি শেলের প্রম্পট বলে মনে হচ্ছে।
এম হার্জক্যাম্প

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

10

পাইথন, 29

lambda n,s:s+'\n'+' '*~-n+'^'

স্ট্রিং, একটি নতুন লাইন, n-1স্পেস এবং একটি ^


2
যদি কেবল rjustএত দীর্ঘ না হত ...
Sp3000

10
আহ, ট্যাডপোল অপারেটর।
ব্যবহারকারী 253751

10

সেড, 16

2y/1/ /;2s/ $/^/

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

আউটপুট:

$ { echo "Lorem ipsum, dollar sit amet."; echo 11; } | sed '2y/1/ /;2s/ $/^/'
Lorem ipsum, dollar sit amet.
 ^
$

1
2y/1/ /;2s/ $/^/
manatwork

@ মান্যাট ওয়ার্ক কল!
ডিজিটাল ট্রমা

9

জাভাস্ক্রিপ্ট (ES6): 63 62 56 52 32 বাইট

কোডের আকারকে হ্রাস করার জন্য nderscore ধন্যবাদ।

p=(a,b)=>b+`\n${' '.repeat(a)}^`

সংস্করণ যা আরও ব্রাউজার জুড়ে কাজ করে (47 বাইট):

p=function(a,b){return b+`\n${' '.repeat(a)}^`}

1. প্রশ্নটি 1-ভিত্তিক সূচক ব্যবহার করে, সুতরাং আপনার প্রয়োজন Array(a-1)। 2. বেনামে ফাংশন ডিফল্ট দ্বারা অনুমোদিত, তাই আপনার প্রয়োজন হয় না point=। ৩. ES6 সংস্করণের জন্য, আপনি returnবিবৃতি এবং ধনুর্বন্ধনী থেকে মুক্তি পেতে পারেন । শুধু ব্যবহার (a,b)=>b+"\n"+Array(a-1).join(" ")+" ^"
ডেনিস

1
33 বাইট: ( \nএকটি আসল নিউলাইন দিয়ে প্রতিস্থাপন )p=(a,b)=>b+`\n${' '.repeat(a-1)}^`
nderscore

@ অ্যাডনিস ইনডেক্সিং আমার পক্ষে নিখুঁতভাবে কাজ করে: i.stack.imgur.com/Tdejc.png
অ্যাড্রয়েট যা

@ ডেনিস Array(1).join(' ')খালি স্ট্রিংয়ের ফলাফল :)
nderscore

@ ইন্ডারস্কোর কোড স্নিপেটে একটি লাইন বিরতি সৃষ্টি না করে সত্যিকারের নতুন লাইনটি ব্যবহার করার উপায় আমি খুঁজে পাচ্ছি না, এবং সূচীকরণটি নীচের
adroitwhiz


6

পাইথন, 29

29 এ এটি করার আরও মজাদার উপায়:

lambda*p:'%s\n%*s'%(p+('^',))

ব্যবহারের উদাহরণ:

>>> f=lambda*p:'%s\n%*s'%(p+('^',))
>>> print f('lorem',5)
lorem
    ^

5

টিআই-বেসিক, 10 (?) বাইট

Disp Ans
Output(3,N,"^

প্রশ্নটি জিজ্ঞাসা করে ইনপুটটি ভেরিয়েবল এন-এ দেওয়া হয়, তবে আপনি অক্ষর var এস অক্ষরটি স্ট্রিং হিসাবে ব্যবহার করতে পারবেন না। যে স্থানে, এটা উওর থেকে STRING ইনপুট নেয়, তাই ওপি উদাহরণ চালানোর জন্য: 2->N:"Lorem ipsum, dollar sit amet.":prgm<program name>

আমি সচেতন যে সম্ভবত এটি গণনা করা হয় না, যদিও, প্রতিটি কোলন-সীমিত অংশটি প্রযুক্তিগতভাবে পৃথক বিবৃতি; এখানে একটি 46-বাইট প্রোগ্রাম যা ইনপুট হিসাবে গ্রহণ করে N "S"( 2 "Lorem ipsum, dollar sit amet.")

Input Str1
2+inString(Str1," 
//^there's a space after the quote
Disp sub(Str1,Ans,length(Str1)-Ans
Output(4,expr(sub(Str1,1,1)),"^

এই দুটোই ধরে নিয়েছে যে স্ক্রিনটি চালানোর আগেই সাফ হয়ে গেছে।


সংখ্যার জন্য ইনপুট থেকে স্ট্রিংয়ের জন্য উত্তর নেওয়া ভাল।
লিটারোসিয়াসট

প্রোগ্রামটির নাম, অ্যাসাইনমেন্ট এবং স্ট্রিং মিলিত 16 টি অক্ষরের চেয়ে বেশি হলে প্রথমটিও কাজ করে না।
lirtosiast

@ থমাসকওয়া ২ 26, আসলে, যেহেতু আমার কাছে একটি রঙিন ক্যালকুলেটর রয়েছে: পি আপনি প্রযুক্তিগতভাবে কাজ করে থাকেন, যদি আপনি ইনপুটটির ওভাররাইটিং অংশটিকে 'কাজ' হিসাবে গণনা করেন।
এমআই রাইট

আপনি যদি একটি ক্লারহোম যুক্ত করেন তবে প্রথমটি কাজ করে: ইনপুট এন, কারণ আই / ও পদ্ধতিগুলি মেশানোর জন্য মেটাতে বর্তমান ভোট +7 এ at
lirtosiast

5

ডিসি, ১৯

?pr256r^255/32*62+P

ইনপুটটি এসটিডিআইএন থেকে। dcস্ট্রিংগুলি ম্যাক্রো সংজ্ঞা এবং এতে অন্তর্ভুক্ত [ ]। স্পেসের স্ট্রিংটি সংখ্যা গণনা করে উত্পন্ন হয় যা যখন 256 বাইট স্ট্রিম হিসাবে প্রকাশিত হয় তখন আমাদের প্রয়োজনীয় স্ট্রিং দেয়। হিসাবটি হ'ল ((n ^ 256) / 255) * 32)। এটি nস্পেস দেয় (এএসসিআইআই অক্ষর 32), তবে আমাদের n-1অনুসরণ করা দরকার ^, তাই আমরা কেবল শেষ বেস 256 ডিজিটের সাথে 62 যুক্ত করব।

আউটপুট

$ dc -e '?pr256r^255/32*62+P' <<< "2 [Lorem ipsum, dollar sit amet.]"
Lorem ipsum, dollar sit amet.
 ^$

4

সি, 59 57 47 বাইট

f(a,c){for(puts(a);--c;putchar(32));puts("^");}

অনেকটাই অকপট. অবরুদ্ধ সংস্করণ:

f(char* a,int c){
    puts(a);        //Print the string first

    for(;--c;)      //Until number-1 is not 0
        putchar(32);//Print a space
    puts("^");      //Print a caret
}

এটি এখানে পরীক্ষা করুন 10 বাইট সংরক্ষণের জন্য @ অ্যান্টোলিগকে
ধন্যবাদ !


লুপটির প্রথম বন্ধনীতে স্থানান্তরিত করা puts(a)এবং আরও সুন্দর এটি - সেখানে ঠিক 2 টি খালি জায়গা রয়েছে! এছাড়াও, আমি মনে করি না এবং আপনার প্রকারটি ঘোষণা করতে হবে এবং - কেবলমাত্র তাদের জন্য অন্তর্নিহিত ব্যবহার করুন - আপনি যদি না করেন তবে কাজ করবে । putchar(32)foracint#include <stdio.h>
আনাতলিগ

@ অ্যানাটলিগ, ধন্যবাদ! আমি ভাবিনি যে প্রকারগুলি বাদ দিয়ে কাজ করবে তবে আমার বিস্ময়ের বিষয়টি তা ঘটল।
স্পিক্যাট্রিক্স

4

সি # 55

একটি ফাংশন, ধারণাটি আমার সি উত্তরের মতো, তবে এই সময়ের রিটার্ন আউটপুটের চেয়ে কম।

string f(string a,int b){return a+'\n'+"^".PadLeft(b);}

4

এসএএস, 35 বাইট

%macro a(n,s);put &s/@&n."^";%mend;

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

data;
%a(3,"My String");
run;

কেবলমাত্র একটি ম্যাক্রো বাস্তবায়ন রয়েছে তবে এটি দীর্ঘতর, এমনকি যদি আপনি এটিকে n = 1 এ অবৈধ পরামিতি সম্পর্কে সতর্কতা দেওয়ার অনুমতি দেন।

যদি আমরা প্রাক-সংজ্ঞায়িত প্যারামিটারগুলি ব্যবহার করতে পারি তবে এসএএস এই তুলনায় তুলনামূলকভাবে খুব কম হবে, যা কোনও ভাষার পক্ষে খুব কমই সংক্ষিপ্ত হওয়ার উদ্দেশ্যে নয় intended


যদি কোনও ডেটাসেটকে ইনপুটটির উত্স হতে দেওয়া হয়, যা আপনি কীভাবে এসএএস-এ 'এটি' করবেন (বা% স্টেটমেন্ট দিয়ে দেবেন) তবে সম্ভবত এটি অনুমোদিত নয় তবে এটি আরও সংক্ষিপ্ত ( 27 বাইট , যা আসলে 25 হতে পারে) যদি আপনি গ্যারান্টি দিয়ে থাকেন যে এটি চালানোর আগে অবিলম্বে ডেটাसेट তৈরি করা হয়েছিল [তবে আপনি কেবল এটি ব্যবহার করতে পারেন set;]:

(প্রাক-বিদ্যমান ডেটাসেট)

data b;
  n=3;
  s="My String";
run;

(প্রকৃত কোড)

data;set b;put s/@n"^";run;

পিপিসিজিতে এসও-র বাসিন্দা এসএএস বিশেষজ্ঞ দেখতে ভাল লাগছে। :)
অ্যালেক্স এ।

আমি মোটামুটি নিশ্চিত যে কিছু পুরনো টাইমার যারা ডিএম স্ক্রিপ্টিং জানেন তারা এই স্কোরটি সেরা করতে পারে ... এবং আমার সেন্টিমিড্যাক দক্ষতা স্তন্যপান করতে পারে।
জো

আমি সর্বদা ভুলে যাই যে ডিএম এমনকি বিদ্যমান, এবং আমি জানি না যে সেন্টিমিড্যাক কী! বিটিডব্লিউ, আপনি যখন পুরো ডেটা পদক্ষেপের জন্য বাইটগুলি গণনা করছেন, আপনার প্রয়োজন হবে না data a;, আপনি কেবল data;এমনটি করতে পারেন যা 2 বাইট সংরক্ষণ করবে। তবে যেমনটি আপনি বলেছেন, যাইহোক এই উদ্দেশ্যে এটি প্রয়োজন হয় না।
অ্যালেক্স এ।

হ্যাঁ, আমার এসএএস-এর অন্তর্নিহিত প্রতিচ্ছবি আমাকে অনুমান করে যে অনুমান করা যায় না :)। ধন্যবাদ।
জো

পুরানো টাইমারগুলির কথা বললে, আমি মনে করি আপনি সমস্ত এসএএস স্বীকৃতিটি অস্বীকার করে এবং একটি পুরানো শৈলীর ম্যাক্রো ব্যবহার করে একটি দম্পতি বাইট সংরক্ষণ করতে পারেন। তারা যদিও পরামিতি গ্রহণ করতে পারে তা আমি স্মরণ করতে পারি না।
অ্যালেক্স এ।

3

মতলব / অকটাভ, ৪১

@(n,s)sprintf('%s\n%s^',s,ones(1,n-1)+31)

এটি একটি বেনাম ফাংশন যা স্ট্রিংটি দেয়। এটি একটি সতর্কতা তৈরি করে, যা আগে কল করে দমন করা যায় warning off


আপনি কি সম্পাদককে সতর্কবার্তা বলতে চান বা এটি আসলে আপনার জন্য কোনও সতর্কতা প্রিন্ট করে? এছাড়াও, আমি আপনাকে 16 টি অক্ষর দ্বারা পরাজিত করেছি ;-) তবে আমার ans =বিটটি প্রিন্ট করে , তাই এটি ঠিক করার পরে, এটি কেবলমাত্র 10 টি অক্ষরের পার্থক্য।
ওবেলে

@ ওবেলে এটি একটি সতর্কতা প্রিন্ট করে তবে ফিরে আসা স্ট্রিংটি প্রভাবিত হয় না।
FryAmTheEggman

3

কে, 21 বাইট

{y,"\n",1_|"^",x#" "}

উদাহরণ:

ryan@DevPC-LX:~/golf/caret$ rlwrap k
K Console - Enter \ for help

  `0:{y,"\n",1_|"^",x#" "}[2;"Lorem ipsum, dollar sit amet."]
Lorem ipsum, dollar sit amet.
 ^  

ব্যাখ্যা ( xসংখ্যাটি yহল স্ট্রিং):

{                   }   enclosing function
               x#" "    repeat the space `x` times
           "^",         prepend the caret
          |             reverse the string to put the caret at the end
        1_              drop the extra space
   "\n",                prepend a newline
 y,                     prepend the text

3

আর, 49 48 46

একটি নামহীন ফাংশন হিসাবে যা STDOUT এ আউটপুট করে। উন্নতির জন্য @ ফ্লাউন্ডারারকে ধন্যবাদ

ক্যারেটটি এন -1-তে সনাক্ত করতে এখন স্ট্র্যাপ ব্যবহার করে। বিড়াল খালি স্ট্রিংয়ের পরিবর্তে \ n এর পৃথককারী ব্যবহার করে।

function(n,s)cat(s,strwrap('^',,n-1),sep='\n')

টেস্ট রান

> f=function(n,s)cat(s,strwrap('^',,n-1),sep='\n')
> f(29,'The caret should point here v hopefully')
The caret should point here v hopefully
                            ^
>

ফাংশন (এন, এক্স) বিড়াল (এক্স, "\ n", রেপ ("", এন -1), "^", সেপ = "") 48 টি অক্ষর
ফ্লাউন্ডার

@ ফ্লাউন্ডারিয়ার এর জন্য ধন্যবাদ ... আমার আসল ধারণাটি এর সাথে একই রকম ছিল, তবে আমি এটি দুর্দান্তভাবে করিনি
মিকিটি

যদি আমাকে দুটি প্রাথমিক স্পেসের অনুমতি দেওয়া হয় তবে এটি কাজ করে: function(n,x)cat(" ",x,"\n",rep("",n),"^")এবং কয়েকটি চরিত্র সংরক্ষণ করে
ফ্লাউন্ডারিয়ার

@ ফ্লাউন্ডারিয়ার আমার সন্দেহ হয় না স্ট্রাপের কিছু কিছু সম্ভাবনাও রয়েছে তবে এটি সম্ভবত শেষ হতে পারে।
মিকিটি

1
ওটা সুন্দর! আমি এর strwrapআগে এই ফাংশনটি কখনই দেখিনি । এটি কি করে বলার সহজ উপায় আছে? ডকুমেন্টেশন থেকে আমি এটি বের করতে পারি না।
ফ্লাউন্ডারিয়ার

3

পাইথন 3, 38 36 বাইট

def f(s,i):return s+'\n'+' '*~-i+'^'

# OR 

def f(s,i):print(s+'\n'+' '*~-i+'^')

এটি এখানে পরীক্ষা করুন 2 বাইট সংরক্ষণের জন্য @ ডেনিসকে
ধন্যবাদ !


(i-1)->~-i
ডেনিস

আমি বিট অপারেশন এবং গণিতে দুর্বল .... যাইহোক ধন্যবাদ! :-D
স্পিক্যাট্রিক্স

2

জুলিয়া, 27 বাইট

(n,s)->s*"\n"*" "^(n-1)*"^"

এটি একটি নামবিহীন ফাংশন তৈরি করে যা কোনও পূর্ণসংখ্যা এবং স্ট্রিংটিকে ইনপুট হিসাবে গ্রহণ করে এবং একটি স্ট্রিং প্রদান করে। এটি কল করার জন্য, এটির একটি নাম দিন f=(n,s)->...

এখানে যা ঘটছে তা হ'ল আমরা একটি নতুন লাইন, n-1স্পেস এবং ক্যারেট যুক্ত করছি। স্ট্রিং কনটেনটেশন ব্যবহার করে *স্ট্রিং পুনরাবৃত্তি করা হয় ^

Ungolfed:

function f(n, s)
    s * "\n" * " "^(n-1) * "^"
end

উদাহরণ:

julia> println(f(2, "Lorem ipsum, dollar sit amet."))
Lorem ipsum, dollar sit amet.
 ^

2

পিএইচপি (সিএলআই) - 42

<?=sprintf("%s\n%$argv[1]s",$argv[2],'^');

কমান্ড লাইন থেকে এটি কল করুন:

php pointer.php 2 "Lorem ipsum, dollar sit amet."

আমি এখনই লক্ষ্য করেছি। তবে আপনার উত্তরটি আমার দ্বিতীয় বিকল্পটির মতো। আমি এটা তোমার জন্য প্রস্তাব করছি: <?printf("$S\n%{$P}s",'^');\nএকটি বাস্তব নিউলাইন দিয়ে প্রতিস্থাপন করুন । মোট 5 বাইট। এটি কেবলমাত্র PBP4.1 এবং তার উপর কাজ করে।
ইসমাইল মিগুয়েল

বাহ, এই মন্তব্যে এতগুলি ভুল ... আমি বোঝাতে চাইছি এটি 26 বাইট দীর্ঘ এবং এটি কেবল পিএইচপি 4.1 এ কাজ করে। এবং এটি আপনার!
ইসমাইল মিগুয়েল

2

মতলব, 25

এই এক অত্যন্ত চটকদার। স্পষ্টতই প্রিন্টগুলি অন-প্রিন্টযোগ্য অক্ষরগুলি ফাঁকা হিসাবে প্রদর্শন করে। নিম্নলিখিত কোড নামের একটি ফাংশন সংজ্ঞায়িত করে ans, যা চশমাগুলি পূরণ করে।

@(N,S)[S 10 ones(N-1) 94]

সুতরাং এই মত এই ফাংশন কল:

ans(2, 'Lorem ipsum, dollar sit amet.')

আউটপুট দেয়:

ans =

Lorem ipsum, dollar sit amet.
 ^

ans =মতলব উত্তরের অংশটি আমি সর্বদা অপছন্দ করি । এটি যদি সমস্যা হয় তবে আমার 6 বাইট যুক্ত করা দরকার ... তবে আমি মতলব উত্তরে সর্বদা এটি দেখেছি। নোট করুন যে এই কোডটি চালানো চলকটিকে ওভাররাইট করে ans, তাই আপনি যদি দ্বিতীয়বার এটি ব্যবহার করতে চান তবে আপনাকে ফাংশনটি নতুন করে সংজ্ঞায়িত করতে হবে!


খুব সুন্দর! আমি জানি না যে কোনও ভেক্টরে স্ট্রিং লাগানো সেভাবে কাজ করেছিল। আমার বোধগম্যতা এটি যেহেতু এটি একটি ফাংশন, সেই স্ট্রিং এটি অর্থবহ মানটি ফিরিয়ে দেয় এবং ম্যাটল্যাবের পুনরায় পরিবেশনের পরিবেশটি এটি প্রিন্ট করার জন্য ঘটে। যেমন আপনি যদি x=ans(2, 'asdf');একটি উত্তর = জিনিস না পান।
FryAmTheEggman

2

কোডগল্ফে আমার প্রথম শট

জাভা, 133 65

String g(int i,String s){for(s+="\n";--i>0;)s+=" ";return s+"^";}

আমি নিশ্চিত এটি আরও কমানো যেতে পারে।

পুরাতন কোড

public void go(int i,String s){System.out.println(s);IntStream.range(1,i).forEach(j->System.out.print(" "));System.out.println("^");}

আপনি অন্য System.outকোথাও সঞ্চয় করতে পারেন ?
ইসমাইল মিগুয়েল

2
দরকার নেই public। এবং এতে পরিবর্তন IntStream.range(1,i).forEach(j->System.out.print(" "));করুনfor(;--i>0;)System.out.print(" ");
স্পিক্যাট্রিক্স

@ কুলগুই আহা! কখনও কখনও সহজ আরও ভাল
pallavt

আপনি কি সেমিকোলনটি ব্যবহার করতে শুরুতে s+="\n"ভিতরে সরিয়ে for()নিতে পারেন?
লিটারোসিয়াসট

@ থমাসকওয়া 1 বাইট কম
plalavt

2

সুইফট, 41

এটা তোলে হতাশ যে সুইফট অপারেটর নেই *উপর Arrayবা String

{$1+reduce(0..<$0,"\n",{$0.0+" "})+"^"}

সুইফট ২.০ এর জন্য:{$1+(0..<$0).reduce("\n"){$0.0+" "}+"^"}
ক্যামেট্রিক্সম

1

স্পেসবিএএস - 34

1 INPUT n,s$: PRINT s$'TAB n-1;"^"

ধর্মপ্রচারকরা PRINTএকটি নতুন লাইন জোর করে, তারপরে কেবল কার্সারটিকে সঠিক অবস্থানে নিয়ে যেতে হবে।



1

জাভাস্ক্রিপ্ট - 52 বাইট

এখানে আমার, এটা বেশ সহজ।

function f(n,s){return s+"\n"+Array(n).join(" ")+"^"}

ব্যবহার:

$ console.log(f(7, "Any string at all"))

Any string at all
      ^

এটি সপ্তম চরিত্রটি নির্দেশ করে।


নিস সংরক্ষণ Scimonster O_O
Florrie

1
আপনি এটি লিখতে পারেন alert((P=prompt)()+"\n"+Array(P()+1).join(" ")+"^")। এবং আপনি 2 বাইট সংরক্ষণ করুন। এছাড়াও, কোডটি চলমান দেখানোর জন্য আপনি এটি স্ট্যাকসনিপেটে তৈরি করতে পারেন। এটি প্রত্যাশা করে যে স্ট্রিংটি প্রথমে আসবে, তারপরে অবস্থান
ইসমাইল মিগুয়েল

1

পার্ল 5, 31

sub{"$_[0]
"." "x($_[1]-1)."^"}

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

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