প্রদত্ত স্ট্রিংয়ে প্রদত্ত সূচকের চারপাশে শব্দটি নির্বাচন করুন


20

উইন্ডোজে, আপনি যখন কোনও পাঠ্যে ডাবল-ক্লিক করেন, পাঠ্যে আপনার কার্সারের চারপাশের শব্দটি নির্বাচন করা হবে।

(এই বৈশিষ্ট্যের আরও জটিল বৈশিষ্ট্য রয়েছে, তবে এই চ্যালেঞ্জের জন্য এগুলি প্রয়োগ করার প্রয়োজন হবে না))

উদাহরণস্বরূপ, |আপনার কার্সারটি প্রবেশ করুন abc de|f ghi

তারপরে, আপনি যখন ডাবল ক্লিক করবেন তখন সাবস্ট্রিংটি defনির্বাচন করা হবে।

ইনপুট আউটপুট

আপনাকে দুটি ইনপুট দেওয়া হবে: একটি স্ট্রিং এবং একটি পূর্ণসংখ্যা।

আপনার কাজটি পূর্ণসংখ্যা দ্বারা নির্দিষ্ট সূচকটির চারপাশে স্ট্রিংয়ের ওয়ার্ড-স্ট্রাস্টিং ফেরত দেওয়া।

আপনার কার্সার ডান হতে পারে আগে বা ডান পর সূচক নিদিষ্ট সময়ে স্ট্রিং অক্ষর।

আপনি যদি ঠিক আগে ব্যবহার করেন তবে দয়া করে আপনার উত্তরে উল্লেখ করুন।

বিশেষ উল্লেখ (স্পেস)

সূচকটি কোনও শব্দের ভিতরে থাকার গ্যারান্টিযুক্ত , সুতরাং abc |def ghiবা এর মতো কোনও প্রান্তের কেস নেইabc def| ghi

স্ট্রিং হবে শুধুমাত্র মুদ্রণযোগ্য ASCII অক্ষর (ইউ + + 0020 থেকে U + এ 007E পর্যন্ত) ধারণ করে।

"শব্দ" শব্দটি রেজেক্স দ্বারা সংজ্ঞায়িত করা হয় (?<!\w)\w+(?!\w), যেখানে \wসংজ্ঞা দেওয়া হয় [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_], বা "আন্ডারস্কোর সহ এএসসিআইআই এর বর্ণমালা অক্ষর"।

সূচকটি 1 সূচকযুক্ত বা 0-সূচকযুক্ত হতে পারে।

আপনি যদি 0-ইনডেক্সড ব্যবহার করেন তবে দয়া করে আপনার উত্তরে এটি উল্লেখ করুন।

Testcases

টেস্টকেসগুলি 1-সূচকযুক্ত এবং কার্সারটি সূচক নির্দিষ্ট করে দেওয়ার পরে ঠিক right

কার্সার অবস্থানটি কেবল প্রদর্শনের উদ্দেশ্যে, যা আউটপুট করার প্রয়োজন হবে না।

string    index     output    cursor position
abc def   2         abc       ab|c def
abc def   5         def       abc d|ef
abc abc   2         abc       ab|c abc
ab cd ef  4         cd        ab c|d ef
ab   cd   6         cd        ab   c|d
ab!cd     1         ab        a|b!cd

2
স্ট্রিংয়ে কি নতুন লাইন থাকতে পারে?
orlp

@orlp ইনপুটটিকে মুদ্রণযোগ্য এএসসিআইআইতে সীমাবদ্ধ করার জন্য চ্যালেঞ্জটি সম্পাদিত হয়েছিল যাতে ইনপুটটিতে নতুন লাইন থাকে না।
FryAmTheEggman

আপনার টেস্টকেসগুলিতে স্পেস ব্যতীত অন্য কোনও সীমানাঙ্ক নেই। যেমন একটি শব্দ সম্পর্কে কি we're?
orlp

2
কি "ab...cd", 3ফিরতে হবে?
টাইটাস

5
@ টিটাস "সূচকটি একটি শব্দের ভিতরে থাকা নিশ্চিত "
মার্টিন ইন্ডার

উত্তর:


10

ভি , 10, 9 7 বাইট

À|diwVp

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

এই উত্তরটি 1-ভিত্তিক সূচক ব্যবহার করে।

এই খাটো হতে পারে যদি আমরা ঠিক কি শিরোনাম বলেছেন না: " নির্বাচন করুন একটি স্ট্রিং প্রদত্ত সূচিতে প্রায় শব্দ"। আমরা করতে পারি

À|viw

যা আক্ষরিকভাবে শব্দটি নির্বাচন করে, তবে দুর্ভাগ্যক্রমে আউটপুট মোটেও পরিবর্তন করে না। সুতরাং এটি নিবন্ধের মধ্যে কাটা, বাকী বাক্যটি মোছার পরে, আবার রেজিস্টারটিকে পেস্ট করে এটিকে কাজ করার জন্য আমাদের কিছুটা কাজ করতে হবে।

ব্যাখ্যা:

À|          " Jump the position of argument 1
  diw       " (d)elete (i)nside this (w)ord.
     V      " Select this line
      p     " And replace it with the word we just deleted

5

সি, 104 বাইট

p[99];i,d;main(l){for(scanf("%d",&i);scanf("%[^a-zA-Z0-9_]%[a-zA-Z0-9_]%n",&d,&p,&l),i>l;i-=l);puts(p);}

স্টিডিনের ইনপুটটি 0-ভিত্তিক সূচক হিসাবে তার পরে একটি স্পেস বা নিউলাইন, স্ট্রিংয়ের পরে প্রত্যাশা করবে। একটি শব্দের সর্বাধিক দৈর্ঘ্য 99 টি অক্ষর। উদাহরণ:

2 abc def

স্ট্রিং ভিত্তিক চ্যালেঞ্জের সাথে সি এবং পার্ল বাঁধা দেখে সত্যিই দুর্দান্ত। :D
ডিজেএমসিএমহেম

ইনপুট স্ট্রিংয়ে 100 টিরও বেশি অক্ষর থাকতে পারে?
লিকি নুন

@ ল্যাকিয়ুন হ্যাঁ, তবে একটি শব্দ 100 টির বেশি অক্ষরের বেশি হতে পারে না।
orlp

আপনি কি নিজের উত্তরের ভিতরে সেই প্রয়োজনীয়তাটি রেখেছেন বলে মনে হচ্ছে?
লিকি নুন

@ ডিগ্রিগ্রিনএগ্রস এবং আইরন ম্যান খুব খারাপ আমাকে আমার উত্তরটি ঠিক করতে হয়েছিল কারণ এটি
শ্বেত স্পেসে

4

সি (জিসিসি), 94 বাইট

f(n,p)char*p;{for(p+=n-1;isalnum(*p)|*p==95&&n--;--p);for(;isalnum(*++p)|*p==95;putchar(*p));}

জিরো-ইনডেক্সড, সূচকটি নিয়ে একটি ফাংশন সংজ্ঞা দেয়, তারপরে স্ট্রিং।


আমি মনে করি isalnum(*++p)|*p==95এটি অপরিবর্তিত আচরণ।
17

টুইট *++p^95?isalnum(*p):1এক বাইট দীর্ঘ, কিন্তু প্রতিটি সংকলক কাজ করে।
orlp

আমি ধরে নিলাম যে শীর্ষস্থানটি একটি টাইপো? এছাড়াও, এখানে একটি অলস IDEone লিঙ্ক।
FryAmTheEggman

isalnum(*++p)||*p==95একটি যুক্ত বাইটের জন্যও কাজ করে।
ওওাকোডার

@ ফ্রাইআম দ্য এজিগম্যান হ্যাঁ এটি এখনই স্থির।
orlp

3

রেটিনা, 22

(1) + + ¶ - * \ b হল (<1>।) | \ ডব্লিউ + +

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন । নিয়মিত প্রোগ্রামটি একটি নতুন লাইনে এবং তারপরে স্ট্রিংয়ের পরে আনারিতে কার্সার অবস্থান গ্রহণ করে। পরীক্ষার স্যুটটিতে প্রতি লাইন মোডে চালানোর জন্য অতিরিক্ত কোড রয়েছে এবং এ ব্যবহার করে\ এবং এটি একটি ডিলিমিটার হিসাবে ব্যবহার করে এবং সুবিধার জন্য এটি দশমিক ব্যবহার করে।

কার্সারের অবস্থান সন্ধান করতে ব্যালান্সিং গ্রুপগুলি ব্যবহার করে, তারপরে একটি শব্দের সীমানা পর্যন্ত ব্যাকট্র্যাক করে। শব্দ পর্যন্ত টেক্সট মুছুন এবং তারপরে শব্দের পরে।


2

সি, 115 বাইট

ফাংশনটির f()জন্য প্যারামিটার হিসাবে স্ট্রিং এবং সূচি (1-ইনডেক্সড) প্রয়োজন এবং ফলাফলটি স্টাডআউটে মুদ্রণ করে। কার্সারটি নির্দিষ্ট অক্ষরের পরে হওয়া উচিত।

f(char*p,int n){char*s=p+n;for(;s>=p&&isalnum(*s)+(*s==95);--s);for(p=s+1;*p&&isalnum(*p)+(*p==95);putchar(*p++));}

2

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

f=(s,n)=>s.slice(0,n).match(/\w*$/)+s.slice(n).match(/\w*/)

কেবল কার্সার পয়েন্টে স্ট্রিংগুলি টুকরো টুকরো করে দেয় (যা 0-সূচকযুক্ত অক্ষরের আগে যা 1-ইনডেক্সেড অক্ষরের পরে একই রকম কাজ করে), তারপরে সংলগ্ন শব্দ খণ্ডগুলি বের করে এবং সংযুক্ত করে conc এমনকি কার্সার শুরু, শেষ বা কোনও শব্দের নিকটে কোথাও না থাকলেও একটি বুদ্ধিমান ফলাফল দেয়।


আপনার কি শেষ রেজেজেসে দরকার?
চার্লি ওয়েন

@ চর্লিওয়াইন হ্যাঁ, অন্যথায় দ্বিতীয় টেস্টকেস কেবল ফিরে আসবে de
নিল

ওফফ, আমি যে পরীক্ষাগুলি চালিয়েছি তার সাথে দুর্ভাগ্য হয়েছিল
চার্লি উইন

2

জাভা 8, 86 78 বাইট

(s,p)->{for(String t:s.split("\\W"))if((p-=t.length()+1)<0)return t;return"";}

পরীক্ষার কেসগুলিতে অসমাপ্ত:

class Indexer {
    public static String f(String s, int p) {
        for(String t : s.split("\\W"))
            if((p -= t.length()+1) < 0)
                return t;
        return "";
    }

    public static void main(String[] args) {
        System.out.println(f("abc def",2));
        System.out.println(f("abc def",5));
        System.out.println(f("abc abc",2));
        System.out.println(f("ab cd ef",4));
        System.out.println(f("ab   cd",6));
        System.out.println(f("ab!cd",1));
    }
}

অক্ষরহীন অক্ষর দ্বারা স্ট্রিংকে বিভক্ত করে, তারপরে প্রতিটি স্ট্রিংয়ের দৈর্ঘ্য, প্লাস 1, নির্দিষ্ট অবস্থান থেকে বিয়োগ করে, যতক্ষণ না এটি নেতিবাচক হয়। যেহেতু কোনও পুনরাবৃত্তি না করা অক্ষরগুলি খালি স্ট্রিং হিসাবে প্রতিনিধিত্ব করে, তাই বিয়োগের যুক্তি উল্লেখযোগ্যভাবে সহজ।

এই কোডটি ব্যাপকভাবে পরীক্ষিত নয়, তাই আমি এটি দেখতে চাই যে কেউ এটি ভঙ্গ করতে পারে কিনা। এছাড়াও, এটি জাভা কোড হিসাবে বিবেচনা করে, এখানে এটি দীর্ঘতম উত্তরটি কীভাবে নয়? : P: P


আমি জানি এটি প্রায় তিন বছর হয়েছে, তবে কার্বিং ল্যাম্বডা এক্সপ্রেশন (অর্থাত ) ব্যবহার করে (s,p)->হতে পারে । এছাড়াও, যদি জাভা 10 এ স্যুইচ করা হয় তবে তা এখনই হতে পারে , যদিও এটি অবশ্যই সময়ে উপলভ্য ছিল না। নির্বিশেষে, দুর্দান্ত উত্তর। আমি দেখতে পেয়েছি ইতিমধ্যে এটি অতীতে কোথাও আপডেট করেছি। :)s->p->java.util.function.Function<String, java.util.function.Function<String, String>> fStringvar
কেভিন ক্রুইজসেন



2

পাইকে, 19 বাইট

#Q;cjmli<i+s)lttjR@

এখানে চেষ্টা করুন!

Q;প্রথম ইনপুটটি সঠিকভাবে স্থাপন করা হয়েছে তা নিশ্চিত করতে নো-অপ্প হিসাবে ব্যবহার করে

#          )   -  first where
   c           -       input.split()
    ml         -      map(len, ^)
      i<       -     ^[:i]
        i+     -    ^+[i]
          s    -   sum(^)
            lt - len(^)-2

আমি যখন আপনার লিঙ্কটিতে ক্লিক করি তখন আমার একটি 504 ত্রুটি হচ্ছে।
লিকি নুন

@ লেকিউন হ্যাঁ, আমি দুর্ঘটনার দ্বারা এটি হত্যা করেছি যখন লেখার কারণেই আমার লোকালহোস্ট লিঙ্ক ছিল, এটি ফিরে আসবে
নীল


1
আপনার প্রোগ্রামটিকে এন আউটপুট হিসাবে মনে হচ্ছে যেখানে নবম শব্দটি নির্বাচিত একটি, তবে আমাদের পুরো শব্দটি প্রয়োজন
মান কালি

2

পাইথন 2, 70 66 বাইট

import re
f=lambda x,y,r=re.split:r('\W',x[:y])[-1]+r('\W',x[y:])[0]

একবারে কার্সার সূচক পর্যন্ত মূল স্ট্রিংয়ের পরে, কার্সার সূচক থেকে শুরু করে স্ট্রিংয়ের পরে অ-শব্দের বিভাজক দ্বারা স্ট্রিং বিভক্ত হয়। বাম বিভাজনের শেষ উপাদানটি ডান বিভক্তির প্রথম উপাদানটি প্রদান করে। 4 বাইট বাঁচানোর জন্য লিকি নুনকে ধন্যবাদ!


1

Clojure, 92 বাইট

(fn[x k](let[[u i](map #(re-seq #"\w+"(apply str %))(split-at k x))](str(last u)(nth i 0))))

প্রথমে, ইনপুট স্ট্রিংকে অবস্থানে বিভক্ত করে k দুটি স্ট্রিনে বিভক্ত করে। তারপরে এই স্ট্রিংগুলির জন্য সন্ধান করুন"\w+" এবং তাদের তালিকা হিসাবে ফিরিয়ে দিন। তারপরে প্রথম তালিকার শেষ উপাদানটি এবং দ্বিতীয় তালিকার প্রথম উপাদানটিকে একত্রিত করুন।

এটি অনলাইনে দেখুন: https://ideone.com/Dk2FIs


1

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

(s,n)=>RegExp(`^.{0,${n}}(\\W+|^)(\\w+)`).exec(s)[2]

const F = (s,n) => RegExp(`^.{0,${n}}(\\W+|^)(\\w+)`).exec(s)[2]

class Test extends React.Component {
    constructor(props) {
        super(props);
        const input = props.input || '';
        const index = props.index || 0;
        this.state = {
            input,
            index,
            valid: /\w/.test(input),
        };
    }
    onInput = () => {
        const input = this.refs.input.value;
        const index = Math.min(+this.refs.index.value, input.length);
        this.setState({
            input,
            index,
            valid: /\w/.test(input),
        });
    }
    render() {
        const {input, index, valid} = this.state;
        return (
            <tr>
                <td>{ this.props.children }</td>
                <td>
                    <input ref="input" type="text" onInput={this.onInput} value={input} />
                    <input ref="index" type="number" onInput={this.onInput} min="1" max={input.length} value={index} />
                </td> 
                {valid && [
                    <td>{F(input, index)}</td>,
                    <td><pre>{input.slice(0, index)}|{input.slice(index)}</pre></td>,
                ]}
            </tr>
        );
    }
}

class TestList extends React.Component {
    constructor(props) {
        super(props);
        this.tid = 0;
        this.state = {
            tests: (props.tests || []).map(test => Object.assign({
                key: this.tid++
            }, test)),
        };
    }
    addTest = () => {
        this.setState({
            tests: [...this.state.tests, { key: this.tid++ }],
        });
    }
    removeTest = key => {
        this.setState({
            tests: this.state.tests.filter(test => test.key !== key),
        });
    }
    
    render() {
        return (
            <div>
                <table>
                    <thead>
                        <th/>
                        <th>Test</th>
                        <th>Output</th>
                        <th>Diagram</th>
                    </thead>
                    <tbody>
                        {
                            this.state.tests.map(test => (
                                <Test key={test.key} input={test.input} index={test.index}>
                                    <button onClick={() => this.removeTest(test.key)} style={{
                                        verticalAlign: 'middle',
                                    }}>-</button>
                                </Test>
                            ))
                        }
                    </tbody>
                    <tfoot>
                        <td/>
                        <td>
                            <button onClick={this.addTest} style={{
                                width: '100%',
                            }}>Add test case</button>
                        </td>
                    </tfoot>
                </table>
            </div>
        );
    }
}

ReactDOM.render(<TestList tests={[
    { input: 'abc def', index: 2 },
    { input: 'abc def', index: 5 },
    { input: 'abc abc', index: 2 },
    { input: 'ab cd ef', index: 4 },
    { input: 'ab   cd', index: 6 },
    { input: 'ab!cd', index: 1 },
]} />, document.body);
input[type="number"] {
  width: 3em;
}
table {
  border-spacing: 0.5em 0;
  border-collapse: separate;
  margin: 0 -0.5em ;
}
td, input {
    font-family: monospace;
}
th {
  text-align: left;
}
tbody {
  padding: 1em 0;
}
pre {
  margin: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>


কেন হবে (\\W+|^)না(\\W|^)
l4m2

1

লুয়া, 71 67 বাইট

ওহু, লুয়া সবচেয়ে দীর্ঘ সমাধান নয়! পাইথনের পিছনে এখনও একটি বাইট, তবে কীভাবে এটি গল্ফ করবেন তা জানেন না। সূচকগুলি 1-ভিত্তিক।

@ লিক্যনুনকে ধন্যবাদ আমাকে string.match4 টি বাইট সংরক্ষণের অস্তিত্বের কথা মনে করিয়ে দিচ্ছে

g,h=...print(g:sub(1,h):match"[%a_]*$"..g:sub(h+1):match("[%a_]+"))

পুরানো 71

দ্রষ্টব্য: ব্যাখ্যাগুলি এখনও এটির উপর ভিত্তি করে রয়েছে, কারণ এটি নতুনটির ক্ষেত্রেও প্রযোজ্য, তবে এতে কিছু অতিরিক্ত তথ্য রয়েছে gmatch

g,h=...print(g:sub(1,h):gmatch"[%a_]*$"()..g:sub(h+1):gmatch"[%a_]*"())

ব্যাখ্যা

প্রথমত, আমরা যুক্তিগুলি আনপ্যাক করি gএবং hসেগুলির চেয়ে কম হয়arg[x]

g,h=...

তারপরে, আমরা আমাদের আউটপুটটি তৈরি করি যা কার্সারের আগে এবং তার পরে অংশটির একত্রীকরণ হয়।

স্ট্রিংয়ের প্রথম অংশটি হ'ল

g:sub(1,h)

আমরা এইটির শেষে শব্দটি খুঁজতে চাই, তাই আমরা ফাংশনটি ব্যবহার করি string.gmatch

:gmatch"[%a_]*$"

এই প্যাটার্নটির সাথে মিল রয়েছে 0..nস্ট্রিংয়ের শেষে বর্ণমালা + আন্ডারস্কোরের অক্ষর সেট। gmatchএকটি ফাংশন আকারে (বন্ধের মূলনীতিটি ব্যবহার করে) মিলের তালিকায় একটি পুনরাবৃত্তিকে ফেরত দেয়, তাই আমরা আমাদের শব্দের প্রথম অংশ পেতে একবার এটি সম্পাদন করি

g:sub(1,h):gmatch"[%a_]*$"()

আমরা আমাদের শব্দের দ্বিতীয় অংশটি একইভাবে পাই

g:sub(h+1):gmatch"[%a_]*"())

কেবলমাত্র তফাতটিই আমাদের নির্দিষ্ট করতে হবে না যে স্ট্রিংয়ের শুরুতে আমরা ব্যবহার করতে চাই (ব্যবহার করে [^%a_]*), কারণ এটি প্রথম বার বলা হলে পুনরাবৃত্তির দ্বারা ফিরে পাওয়া ম্যাচ হবে।


g:sub(h+1):match"^[%a_]*"?
ফাঁস নুন

@ লেকিউন অস্তিত্বকে সম্পূর্ণরূপে ভুলে গেছেন match/ প্রচুর বাইট সংরক্ষণ করেন, ধন্যবাদ
ক্যাটেনকিও

"ইনডেক্স" এর জন্য -1
লিকি নুন


আমি পাত্তা দিই না, "ইনডেক্স" এর জন্য এখনও -1।
ফুটো নুন

1

জাভাস্ক্রিপ্ট (বাহ্যিক গ্রন্থাগার ব্যবহার করে) (168 বাইট)

(n,w)=> _.From(w).Select((x,i)=>({i:i,x:x})).Split((i,v)=>v.x==" ").Where(a=>a.Min(i=>i.i)<=n-1&&a.Max(i=>i.i)>=n-2).First().Select(i=>i.x).Write("").match(/^\w*^\w*/)[0]

লিবিব লিঙ্ক: https://github.com/mvegh1/Enumerable/blob/master/linq.js

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

এখানে চিত্র বর্ণনা লিখুন


"শব্দ" শব্দটি রেজেক্স দ্বারা সংজ্ঞায়িত করা হয় (?<!\w)\w+(?!\w), যেখানে \wসংজ্ঞা দেওয়া হয় [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_], বা "আন্ডারস্কোর সহ এএসসিআইআই এর বর্ণমালা অক্ষর"।
লিকি নুন

Regex101.com এ আমি যখন রেজিেক্সটি চালাব! সিডির বিরুদ্ধে আমি এইটি পেয়েছি: কোনও মিলের দল বের করা হয়নি। এর অর্থ হ'ল আপনার প্যাটার্নটি মিলছে তবে এতে কোনও (ক্যাপচারিং (গ্রুপ) নেই যা সাবজেক্ট স্ট্রিংয়ের সাথে কোনও কিছুর সাথে মিলে। হতে পারে আমি কোথাও ভুল করছি ...
আপেলজ্যাকস 01

আমার কিছু কেন লাগবে?
লিকি নুন

আমি এটি শিখার জায়গাটি জানি না, তবে আমি বলছি যে আমি যখন আবের বিরুদ্ধে এই রেজেক্স চালাচ্ছি তখন সিডি আমি কিছুই পাই না। তাহলে 'আব' কেন সঠিক আউটপুট হবে?
আপেলজ্যাকস 01


1

পার্ল 6 , 34 বাইট

->\b{&{first *.to>b,m:g/<<\w+>>/}}

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

বেনামি কোডব্লক যা ইনপুট কারিড নেয়, পছন্দ করে f(n)(string)

ব্যাখ্যা:

->\b{                            }   # Anonymous code block that takes a number
     &{                         }    # And returns another code block that
       first       ,m:g/<<\w+>>/     # Finds the first word in the input
             *.to>b                  # Where the start is after the number


1

এপিএল (এনএআরএস), 58 টি চর, 116 বাইট

{m←⎕A,⎕a,⎕D,'_'⋄↑v⊂⍨m∊⍨v←⍵↓⍨¯1+⍵{⍵≤1:⍵⋄m∊⍨⍵⊃⍺:⍺∇⍵-1⋄⍵+1}⍺}

{{⍵≤1: ⍵⋄m∊⍨⍵⊃⍺: ⍺∇⍵-1⋄⍵ + 1 ⍺ where স্ট্রিংটি শুরু করুন কোথায় ... কীভাবে ব্যবহার করবেন এবং পরীক্ষা করবেন:

  f←{m←⎕A,⎕a,⎕D,'_'⋄↑v⊂⍨m∊⍨v←⍵↓⍨¯1+⍵{⍵≤1:⍵⋄m∊⍨⍵⊃⍺:⍺∇⍵-1⋄⍵+1}⍺}
  2 f 'abc def'
abc
  5 f 'abc def'
def
  2 f 'abc abc'
abc
  4 f 'ab cd ef'
cd
  1 f 'ab!cd'
ab
  6 f 'ab   cd'
cd 

0

এমএটিএল , 16 15 বাইট

'\w+'5B#XXi>)1)

কার্সারটি 1-সূচকযুক্ত এবং চরিত্রের পরে (পরীক্ষার ক্ষেত্রে যেমন হয়)।

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

'\w+'    % Push string to be used as regex pattern
5B#XX    % Take input string implicitly. Apply regex. Push matches and ending indices
i>       % Take input number. Compare with obtained ending indices. Gives true for
         % ending indices that exceed the input number
)        % Use as logical index to select the corresponding matches
1)       % Select the first match. Implicitly display

0

পাওয়ারশেল v3 +, 103 101 বাইট

param($a,$n)for(;$n[++$a]-match'\w'){}$i=$a--;for(;$n[--$a]-match'\w'-and$a-ge0){}-join$n[++$a..--$i]

একটি বোকা সমাধান ধরনের, কিন্তু অন্যদের চেয়ে পৃথক পদ্ধতির।

$aস্ট্রিংয়ের 0-ভিত্তিক সূচক হিসাবে ইনপুট নেয় $n। তারপরে, আমরা আমাদের শব্দের সীমানা খুঁজে পাই। আমরা যখন স্ট্রিংয়ের শেষে পৌঁছিনি এবং / অথবা আমরা এখনও শব্দ-অক্ষরগুলির সাথে মিল করছি, আমরা ++$a। তারপরে, বেড়া পোস্টিংয়ের কারণে, আমরা সেট করেছিলাম $i=$a--। এর পরে, আমরা পিছনে ক্রল করব, $aএটি না হওয়া পর্যন্ত হ্রাস পাচ্ছে0 বা আমরা চরিত্রটিকে আঘাত করি না। তারপরে আমরা সেই দুটি নির্দিষ্টকরণ (ওবিওইর অ্যাকাউন্টে কিছু বৃদ্ধি / হ্রাস সহ) এর উপর ভিত্তি করে ইনপুট স্ট্রিংটি স্লাইস করি এবং-join এবং ফলাফলটি একত্রিত করে একসাথে করি।

উদাহরণ

PS C:\Tools\Scripts\golfing> .\select-the-word-around-the-index.ps1 2 'This!test'
This

PS C:\Tools\Scripts\golfing> .\select-the-word-around-the-index.ps1 5 'This!test'
test

select-the-word-around-the-index.ps1
লিকি নুন

0

পিএইচপি, 98 বাইট

function f($s,$p){foreach(preg_split('#\W+#',$s,-1,4)as$m)if($m[1]+strlen($m[0])>=$p)return$m[0];}
  • অক্ষর-অক্ষর দ্বারা স্ট্রিং বিভক্ত করে তাদের অবস্থানটি মনে করে (4 == PREG_SPLIT_OFFSET_CAPTURE) না পৌঁছানো পর্যন্ত শব্দগুলির মধ্য দিয়ে লুপ করে।
  • পিএইচপি স্ট্রিংগুলি 0-সূচকযুক্ত, অক্ষরের আগে কার্সার তবে শব্দের আগে বা পরে হতে পারে

0

পাইথন 3, 112 140 বাইট

from string import*
p='_'+printable[:62]
def f(s,h,r=''):
 while s[h]in p and h>-1:h-=1
 while h+1<len(s)and s[h]in p:h+=1;r+=s[h]
 return r

0-ইন্ডেক্স।

সূচী থেকে প্রথম বর্ণানুক্রমিক অক্ষরের দিকে পিছনে সন্ধান করে, তারপরে সূচকের পরে শেষ বর্ণমালার অক্ষরের দিকে এগিয়ে যায়। এটি করার সম্ভবত একটি দুর্দান্ত উপায় আছে।

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


@ ল্যাকিয়ুন _যোগ করা হয়েছে, আমি নিশ্চিত না কেন আমি f('abc',1)যদিও এর জন্য ত্রুটি পেয়েছি ।
এ্যাটলজিস্ট

0

জাভাস্ক্রিপ্ট (ইএস 6), 43 42 বাইট

s=>n=>s.replace(/\w*/g,(x,y)=>y<n?s=x:0)&&s

জাভাস্ক্রিপ্ট (ES 3), 65 বাইট

function(s,n){s.replace(/\w*/g,function(x,y){y<n?s=x:0});alert(s)}

0

05 এ বি 1 ই , 14 বাইট

ð«._DžjмS¡Á2£J

পোর্ট অফ @AndersKaseorg 'Pyth জবাব হবে এর উত্তরে

1-চ্যালেঞ্জ পরীক্ষার মামলার মতো সূচিযুক্ত।

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

ð«              # Append a space to the (implicit) input-String
  ._            # Rotate this string the (implicit) input-integer amount of times
                #  towards the left
     D          # Duplicate this string
      žjм       # Remove [a-zA-Z0-9_] from the string
         S¡     # Split the rotated string by each of the remaining characters
           Á    # Rotate the resulting list once towards the right
            2£J # And only leave the first two items, joined together
                # (which is output implicitly)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.