पॉइंटर्स, पॉइंटर्स, पॉइंटर्स!


46

परिचय

जैसे कि जावा कुछ भाषाओं के त्रुटि आउटपुट में, एक सूचक प्रोग्रामर की वास्तव में, जहां त्रुटि गलत हो गया एक विचार देने के लिए दिखाया गया है।

ले लो इस उदाहरण Ideone पर:

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

ध्यान से देखें कि अमान्य कोड कहाँ है?

चुनौती

आपकी चुनौती है: दिए गए नंबर एन और स्ट्रिंग एस , एन वें चरित्र में एस पर एक सूचक रखें ।

उदाहरण

इनपुट :2, "Lorem ipsum, dollar sit amet."

आउटपुट :

Lorem ipsum, dollar sit amet.
 ^

नियम

  • इनपुट STDIN या फ़ंक्शन मापदंडों के माध्यम से प्राप्त होता है
  • कंसोल या returnएड के लिए आउटपुट प्रिंट आउट है
  • आउटपुट में नई लाइनों, रिक्त स्थान आदि की अनुगामी होती है
  • सूचक चरित्र चाहिए एक हो ^ कैरट और एक नई लाइन पर होना चाहिए।
  • यह कोड गोल्फ है, इसलिए सबसे छोटा उत्तर जीतता है। सौभाग्य!

16
मुझे लगता है कि यह एक बहुत ही सरल समस्या है, इसलिए मुझे यकीन नहीं है कि यह अच्छी तरह से प्राप्त होगा। पर्याप्त रेप होने पर आप सैंडबॉक्स को आज़माना चाहते हैं ।
FryAmTheEggman

6
मुझे लगता है कि यदि इनपुट में कई लाइनें होतीं, तो इसे थोड़ा और दिलचस्प बनाया जा सकता था, ताकि आपको सही स्थिति (स्थिति) में एक नई रेखा, स्थान और कैरेट सम्मिलित करना पड़े। सच में, कल्पना सच में नहीं कहना है यह होगा एक लाइन हो, लेकिन मैं लागू करने लगता है कि अब कुछ जवाब गलत तरीके से अमान्य हो जाएगा, कोई उदाहरण नहीं है के बाद से है कि पता चलता है यह।
ज्योबिट्स

3
जैसा मैंने कहा, बिल्ली शायद इस एक पर बैग से बाहर है। मान्य उत्तर पोस्ट किए जाने के बाद नियम आमतौर पर अच्छी तरह से काम नहीं करते हैं। जियो और सीखो;)
ज्योबिट्स

1
@SohamChowdhury मैं सिर्फ वह दिखावा करूंगा जो जानबूझकर किया गया था;) क्या आप चाहते हैं कि मैं इसे ठीक करूं?
मंकीबोर्डबोर्ड

9
हालांकि यह बहुत सरल हो सकता है, आपने निश्चित रूप से पहली चुनौती के लिए अच्छा किया है! आपके पास + 16 / -0 वोट, 1,300 विचार और 28 उत्तर (इस लेखन के अनुसार) हैं और आपने हॉट नेटवर्क प्रश्न सूची बनाई है। अच्छी नौकरी!
एलेक्स ए।

जवाबों:


36

C 33

यदि केवल एक फ़ंक्शन की अनुमति है, तो सी भी प्रतिस्पर्धा कर सकता है।

(रिकॉर्ड के लिए, 2 बाइट्स ने @x गुले को thx बचाया। माउंट thx टिप्पणी अप्रत्याशित रूप से वाष्पित है।)

1 और char ने thx @Mig को बचाया

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

19
C हमेशा प्रतिस्पर्धा कर सकता है, यह हमेशा जीत नहीं सकता। ;)
एलेक्स ए।

3
@AlexA। <श्रग> मुझे अपनी जीत की तरह लग रहा है ;-)
डिजिटल ट्रॉमा

3
1 चार्ट सहेजें:f(a,c){printf("%s\n%*c",a,c,94);}
माइकल एम।

यदि मैं एक निंदक व्यक्ति था, तो मैं कहूंगा कि यह अभी भी लगभग 4 गुना है जब तक कि एक गोल्फ की भाषा में सबसे छोटा जवाब है। जो हमेशा की तरह व्यवसाय के बारे में है। ;) यह चालाक है, हालांकि। मुझे लगता है कि मैंने *पहले प्रारूप स्ट्रिंग में विकल्प देखा था , लेकिन इसके बारे में पूरी तरह से भूल गया था। भविष्य में आस्की कला की कुछ चुनौतियों के लिए काम आ सकता है।
रेटो कोराडी

35

ब्रेनफ़ * ck - 133 बाइट्स

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

इनपुट की उम्मीद है [0-9]{2}.*जैसे "02Hello दुनिया !!!" उत्पादन होगा

नमस्ते दुनिया!!!
 ^

प्रोग्रामिंग पहेलियाँ और कोड गोल्फ में आपका स्वागत है! यह एक महान पहली पोस्ट, अच्छा काम है! : D
एलेक्स ए।

समस्या यह है कि कोई भी नहीं जानता कि क्या यह वैध कोड है, अकेले समस्या हल करें :)
साइमन

हाँ, मुझे लगता है कि यहाँ एक बंद-एक त्रुटि है। eउदाहरण में कैरेट होना चाहिए । 1 बाइट की कीमत पर इसे -सामने जोड़कर तय किया जा सकता है[->.<]
FryAmTheEggman

@FryAmTheEggman आप सही हैं - संपादन देखें। मेरे पास मूल रूप से यह ई के तहत था जैसा कि अब है, लेकिन मैं अलग-अलग फोंट के साथ दो आईडीई का उपयोग करके भ्रमित हो गया।
सुडो rm -rf स्लैश

25

IA-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-बिट डेटा का उपयोग करके कोड में दो शून्य बाइट्स डाल देगा!

अंत में, यह eax2 बाइट्स के बजाय 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और शून्य को , इसलिए असेंबली कोड में आपकी टिप्पणी भ्रामक है। ahal
रुस्लान

@ रोलन थैंक्स! फिक्स्ड। यह पिछले संस्करण से एक अवशेष था।
अनातोली

nakedवहाँ क्यों है ? और यह पहली चीज क्यों है जो मैंने देखी?
caird coinheringaahing

यह Microsoft है जिसने nakedसामने रखने का फैसला किया है : msdn.microsoft.com/en-us/library/h5w10wxs.aspx
anatolyg

20

अजगर ,,

zp\^*tQd

यह समाधान अब काम नहीं करता है, क्योंकि मैंने जिस भाषा के नाम के साथ लिंक किया है, उसके बाद किए गए कमिट pमें एरीटी 1 है। पायथ में एक समान स्कोर प्राप्त करने के कई अन्य तरीके हैं जो आज भी काम करते हैं, जैसे zp+*dQ\^

यदि स्ट्रिंग को उद्धरण की आवश्यकता है, vतो कोड काम की शुरुआत में जोड़ देगा । यदि इसे अल्पविराम से अलग करना है, तो यह 10 बाइट तक जाता है:

eQp\^*dthQ

मुझे लगता है कि यह अब तक का सबसे छोटा है। बहुत बढ़िया।
मंकीबोर्डबोर्ड

एल्गोरिथ्म मेरे लिए गलत लगता है, मुझे लगता है कि ^हमेशा पहले चरित्र के तहत होगा। और जिस तरह से इनपुट पैरामीटर गलत ऑर्डर में ऑनलाइन इंटरप्रेटर को दिए जाते हैं (इसलिए यह निष्पादित नहीं होता है)।
जिम

1
@ इस उत्तर में अजगर के एक पुराने संस्करण का उपयोग किया गया pथा , जहाँ पर 1 था। इससे आउटपुट की पहली लाइन पहले प्रिंट होती थी और उसके बाद अगली लाइन पर कैरट और उसके बाद रिक्त स्थान आते थे। अब आप z+*dQ\^एक छोटे स्कोर के लिए कर सकते हैं लेकिन एक नई अनुगामी के साथ, या इसे हटाने pसे पहले जोड़ +सकते हैं। मैं अनिश्चित हूं कि यहां क्या करना है, क्योंकि लोगों ने उत्तर के इस संस्करण को उकेरा है, मुझे लगता है कि मैं उस संस्करण को खोजने की कोशिश करूंगा जिस पर काम किया था।
FryAmTheEggman

16

टी-एसक्यूएल, 90

हालांकि एक बहुत ही सरल सवाल है, हमेशा इन भाषाओं में कोशिश करना दिलचस्प होता है जो वास्तव में उस मामले के लिए अच्छी तरह से या गोल्फ का समर्थन नहीं करते हैं।

यह उत्तर लगभग सबसे लंबा होने की गारंटी है।

यह SQL सर्वर के लिए इनलाइन तालिका फ़ंक्शन बनाता है जो पैरामीटर के रूप में @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 बाइट समाधान आंशिक रूप से feersum के जवाब (तर्क क्रम उलट) के साथ चोरी हो गया है:

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

12

बैश, २,

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

उत्पादन

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

गाजर? इसके अलावा, अंत में डॉलर क्या है?
शिमोनस्टर

7
डॉलर शेल का संकेत प्रतीत होता है।
M.Herzkamp 11

3
@Scimonster गाजर एक मजाक में मेरा प्रयास था - प्रश्न को मेरा संपादन देखें । और हाँ, $अंत में शेल प्रांप्ट है। यह प्रश्न निर्दिष्ट करता है कि अनुगामी न्यूलाइन्स की अनुमति है, लेकिन कहते हैं कि वे आवश्यक नहीं हैं।
डिजिटल ट्रॉमा

10

अजगर, २ ९

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

स्ट्रिंग, एक नई रेखा, n-1रिक्त स्थान, और ए ^


2
यदि केवल rjustइतना लंबा नहीं था ...
Sp3000

10
आह, टैडपोल ऑपरेटर।
user253751

10

सेड, १६

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

यह इस मेटा उत्तर का एक परीक्षण है । विशेष रूप से मुझे यह आवश्यक है कि संख्या एन में इनपुट है। पोजीशन 2 में कैरेट के लिए, N के लिए इनपुट होगा 11। यह भी कड़ाई से निर्दिष्ट नहीं है कि एस और एन को कौन सा क्रम होना चाहिए, इसलिए यहां एस पहले जाता है, उसके बाद एक नई लाइन पर यूनिरी एन , सभी एसटीडीआईएन के माध्यम से।

आउटपुट:

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

1
2y/1/ /;2s/ $/^/
मैनटवर्क

@manatwork अच्छा फोन!
डिजिटल ट्रामा

9

जावास्क्रिप्ट (ईएस 6): 63 62 56 52 32 बाइट्स

कोड के आकार को कम करने के लिए अंडरस्कोर के लिए धन्यवाद।

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

संस्करण जो अधिक ब्राउज़रों में काम करता है (47 बाइट्स):

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

1. प्रश्न 1-आधारित अनुक्रमण का उपयोग करता है, इसलिए आपको आवश्यकता है Array(a-1)। 2. अनाम फ़ंक्शन डिफ़ॉल्ट रूप से अनुमत हैं, इसलिए आपको इसकी आवश्यकता नहीं है point=। 3. ईएस 6 संस्करण के लिए, आप returnस्टेटमेंट और ब्रेसिज़ से छुटकारा पा सकते हैं । बस उपयोग करें (a,b)=>b+"\n"+Array(a-1).join(" ")+" ^"
डेनिस

1
33 बाइट्स: ( \nएक वास्तविक न्यूलाइन के साथ बदलें )p=(a,b)=>b+`\n${' '.repeat(a-1)}^`
nscorecore

@ डेनिस मेरे लिए अनुक्रमण पूरी तरह से काम करता है: i.stack.imgur.com/Tdejc.png
adroitwhiz

@ डेनिस का Array(1).join(' ')परिणाम एक रिक्त स्ट्रिंग में है :)
अंडरस्कोर

@nderscore मुझे कोड स्निपेट में लाइन ब्रेक के बिना वास्तविक न्यूलाइन का उपयोग करने का एक तरीका नहीं मिल सकता है, और अनुक्रमण दिए गए उदाहरण का अनुसरण करता है: i.stack.imgur.com/Tdejc.png
adroitwhite

7

CJam, 9 बाइट्स

q~N@(S*'^

इसे ऑनलाइन आज़माएं।

यह काम किस प्रकार करता है

q~  e# Read the input from STDIN and interpret it.
    e# This pushes the integer and the string on the stack.
N@  e# Push a linefeed an rotate the integer on top of it.
(S* e# Subtract 1 and push a string consisting of that many spaces.
'^  e# Push a caret.

6

अजगर, २ ९

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 S का उपयोग नहीं कर सकते। इसके स्थान पर, वह Ans से स्ट्रिंग इनपुट लेता है, इसलिए ओपी में उदाहरण को चलाने के लिए 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)),"^

ये दोनों मानते हैं कि चलने से पहले स्क्रीन को साफ कर दिया गया है।


आप स्ट्रिंग के लिए नंबर और Ans के लिए इनपुट से इनपुट लेना बेहतर होगा।
1

यदि प्रोग्राम का नाम, असाइनमेंट और स्ट्रिंग संयुक्त 16 वर्णों से अधिक हो तो भी पहला काम नहीं करता है।
lirtosiast

@ThomasKwa 26, वास्तव में, चूंकि मेरे पास एक रंग कैलकुलेटर है: पी यह तकनीकी रूप से काम करता है, यदि आप इनपुट के ओवरराइटिंग भाग को 'वर्किंग' के रूप में गिनते हैं।
एमआई राइट

यदि आप ClrHome: Input N को जोड़ते हैं तो पहला काम करता है, क्योंकि I / O विधियों के मिश्रण के लिए मेटा पर वर्तमान वोट +7 पर है।
lirtosiast

5

डीसी, १ ९

?pr256r^255/32*62+P

इनपुट STDIN से है। dcतार स्थूल परिभाषाएँ हैं और इसमें निहित हैं [ ]। रिक्त स्थान की स्ट्रिंग को संख्या की गणना करके उत्पन्न किया जाता है जब एक बेस 256 बाइट स्ट्रीम के रूप में व्यक्त किया जाता है जो स्ट्रिंग हमें ज़रूरत होती है। गणना है ((n ^ 256) / 255) * 32)। यह nरिक्त स्थान देता है (ASCII वर्ण 32), लेकिन हमें n-1इसके बाद की आवश्यकता है ^, इसलिए हम बस 62 को अंतिम आधार 256 अंक जोड़ते हैं।

उत्पादन

$ 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("^");}

बहुत सीधा। Ungolfed संस्करण:

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
}

इसका परीक्षण करें यहाँ
के लिए धन्यवाद @anatolyg 10 बाइट्स को बचाने के लिए!


यह स्थानांतरित करने के लिए puts(a)और अधिक सुंदर है और लूप putchar(32)के कोष्ठकों में for- वहाँ बिल्कुल 2 खाली स्थान हैं! इसके अलावा, मुझे नहीं लगता कि आपको इसके प्रकार की घोषणा करने की आवश्यकता है aऔर c- बस intउनके लिए निहितार्थ का उपयोग करें - यदि आप ऐसा नहीं करते हैं तो काम करेगा #include <stdio.h>
अनातोली

@anatolyg, धन्यवाद! मैंने नहीं सोचा था कि प्रकारों को छोड़ना काम करेगा, लेकिन मेरे आश्चर्य के लिए, यह किया।
स्पिकैट्रिक्स

4

C # 55

एक फ़ंक्शन, अवधारणा मेरे सी उत्तर के समान है, लेकिन इस बार का रिटर्न आउटपुट से कम है।

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

4

एसएएस, 35 बाइट्स

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

यह एसएएस एक नग्न समारोह के बराबर है; इसे कॉल करने के लिए डेटा चरण को जोड़ने के लिए (इसे कॉल करने के लिए C मुख्य फ़ंक्शन के बराबर) थोड़ा अधिक होगा (9 और बाइट्स - Ty Alex), लेकिन मुझे लगता है कि इस उद्देश्य के लिए आवश्यक नहीं है। इसे कैसे कहा जाएगा:

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

मैक्रो-केवल कार्यान्वयन है, लेकिन यह बहुत लंबा है, भले ही आप इसे एन = 1 पर अमान्य मापदंडों के बारे में चेतावनी देने की अनुमति दें।

यदि हम पूर्व-परिभाषित मापदंडों का उपयोग कर सकते हैं, तो एसएएस इस पर तुलनात्मक रूप से काफी कम होगा, जो कि एक भाषा के लिए दुर्लभ है जो निश्चित रूप से छोटा नहीं है।


यदि किसी डेटासेट को इनपुट का स्रोत होने दिया जाता है, जो कि SAS (या% let स्टेटमेंट) में 'इसे' कैसे करेगा, लेकिन संभवत: इसकी अनुमति नहीं है, यह और भी छोटा है ( 27 बाइट्स , जो वास्तव में 25 हो सकते हैं यदि आपने गारंटीकृत डेटासेट का निर्माण इस चलाने से तुरंत पहले किया था [जैसा कि आप तब उपयोग कर सकते हैं set;]):

(पहले से मौजूद डेटासेट)

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

(वास्तविक कोड)

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

पीपीसीजी पर एसओ के निवासी एसएएस विशेषज्ञ को देखने के लिए अच्छा है। :)
एलेक्स ए।

मुझे पूरा यकीन है कि डीएम स्क्रिप्टिंग को जानने वाले कुछ पुराने टाइमर इस स्कोर को सबसे अच्छा कर सकते हैं ... और मेरे cmdmac कौशल चूसना।
जो

मैं हमेशा यह भूल जाता हूं कि DM भी मौजूद है, और मुझे यह भी नहीं पता कि cmdmac क्या है! Btw, जब आप पूरे डेटा चरण के लिए बाइट्स गिन रहे हैं, तो आपको ज़रूरत नहीं है data a;, आप बस कर सकते हैं data;जो 2 बाइट्स बचाएगा। लेकिन जैसा कि आपने कहा, वैसे भी इस उद्देश्य के लिए यह आवश्यक नहीं है।
एलेक्स ए।

हाँ, मेरे SAS ने सजगता दिखाते हुए मुझे सहजता से यह अनुमान नहीं लगाने दिया कि मैं :)। धन्यवाद।
जो

पुराने समय की बात करें तो, मुझे लगता है कि आप सभी एसएएस अंतर्ज्ञान को धता बताकर और पुरानी शैली के मैक्रो का उपयोग करके एक जोड़े को बचा सकते हैं। मुझे याद नहीं है कि क्या वे मापदंडों को स्वीकार कर सकते हैं।
एलेक्स ए।

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

आर, ४ ९ ४ 46 ४६

एक अनाम फ़ंक्शन के रूप में जो STDOUT को आउटपुट करता है। सुधार के लिए @Founderer को धन्यवाद।

कार्यवाहक को n-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, x) बिल्ली (x, "\ n", प्रतिनिधि (", n-1)," ^ ", sep =" ") 48 वर्ण है
Flounderer

@Flounder इसके लिए धन्यवाद ... मेरा मूल विचार इसके समान था, लेकिन मैंने इसे अच्छी तरह से नहीं किया
मिकट

अगर मुझे दो शुरुआती स्थान की अनुमति है, तो यह काम करता है: function(n,x)cat(" ",x,"\n",rep("",n),"^")और कुछ पात्रों को बचाता है
फ्लुंडरर

@Flounderer मुझे संदेह नहीं है। स्ट्रैप में भी कुछ संभावनाएं हैं लेकिन यह शायद अधिक समय तक खत्म हो जाएगी।
मिकट

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
डेनिस

मैं बिट संचालन और गणित के साथ कमजोर हूँ .... वैसे भी धन्यवाद! :
स्पिकट्रिक्स

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

PHP (CLI) - 42

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

कमांड लाइन से इसे कॉल करें:

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

मैंने केवल अब ध्यान दिया है। लेकिन आपका जवाब बिल्कुल मेरे 2 विकल्प जैसा है। मैं इसे आप के लिए की पेशकश कर रहा हूँ: <?printf("$S\n%{$P}s",'^');\nएक वास्तविक न्यूलाइन के साथ बदलें । कुल 5 बाइट्स है। यह केवल PBP4.1 और उसके नीचे काम करता है।
इस्माइल मिगुएल

वाह, उस टिप्पणी में बहुत सारी गलतियाँ ... मेरा मतलब था कि यह 26 बाइट लंबा है और यह केवल PHP4.1 पर काम करता है। और यह तुम्हारा है!
इस्माईल मिगुएल

2

मतलूब, २५

यह एक बहुत ही अजीब है। स्पष्ट रूप से रिक्त स्थान के रूप में गैर-मुद्रण योग्य वर्णों को प्रदर्शित करता है। निम्न कोड नामित एक फ़ंक्शन को परिभाषित करता है 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, इसलिए यदि आप इसे दूसरी बार उपयोग करना चाहते हैं, तो आपको फ़ंक्शन को फिर से परिभाषित करना होगा!


बहुत अच्छा! मुझे नहीं पता था कि एक वेक्टर में एक स्ट्रिंग डालकर उस तरह काम किया। मेरी समझ यह थी कि चूंकि यह एक फ़ंक्शन है, स्ट्रिंग इसे सार्थक मान लौटाती है, और MATLAB का उत्तर वातावरण बस इसे प्रिंट करने के लिए होता है। यानी यदि आप करते हैं तो x=ans(2, 'asdf');आपको ans = चीज नहीं मिलती है।
FryAmTheEggman

2

कोडगॉल्फ पर मेरा पहला शॉट

जावा, १३३ ६५

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(" ");
Spikatrix

@CoolGuy आहा! कभी-कभी सरल बेहतर होता है
पल्लव

क्या आप सेमीकॉलोन का उपयोग करने के लिए इनिशियलाइज़ेशन के s+="\n"अंदर जा सकते हैं for()?
lirtosiast

@ThomasKwa 1 बाइट कम
पल्लव

2

स्विफ्ट, ४१

यह निराशाजनक है कि स्विफ्ट ऑपरेटर नहीं है *पर Arrayया String

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

स्विफ्ट 2.0 के लिए:{$1+(0..<$0).reduce("\n"){$0.0+" "}+"^"}
कामेट्रिक्सम

1

SpecBAS - 34

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

Apostrophe 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
      ^

यह सातवें चरित्र की ओर इशारा करता है।


नाइस सेव स्कमोनस्टर O_O
फ्लोर्री

1
आप इसे लिख सकते हैं alert((P=prompt)()+"\n"+Array(P()+1).join(" ")+"^")। और आप 2 बाइट बचाते हैं। इसके अलावा, आप इसे चलाने वाले कोड को दिखाने के लिए एक कार्यपट्टी में बना सकते हैं। यह उम्मीद करता है कि स्ट्रिंग पहले आ जाएगी, फिर स्थिति
इस्माईल मिगुएल

1

पर्ल 5, 31

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

आप 2-3 वर्ण सहेज सकते हैं। अंतिम न्यूलाइन को छोड़ें क्योंकि इसकी आवश्यकता नहीं है, फिर पहली न्यूलाइन को शाब्दिक न्यूलाइन में बदलें। (पर्ल मल्टी लाइन स्ट्रिंग्स के साथ ठीक है)
श्री लामा

@ श्री ललाम धन्यवाद, वे अच्छे हैं।
hobbs
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.