অঙ্কগুলি অবিচ্ছিন্ন


72

কার্য

এইরকম একসাথে "ধসে পড়া" ডিজিটের ইংরেজি নামগুলির একটি স্ট্রিং দেওয়া হয়েছে:

zeronineoneoneeighttwoseventhreesixfourtwofive

স্ট্রিংটি আবার অঙ্কগুলিতে বিভক্ত করুন:

zero nine one one eight two seven three six four two five

বিধি

  • ইনপুটটি সর্বদা একটি স্ট্রিং থাকে। এটি সর্বদা এক বা একাধিক ছোট অক্ষরের ইংরেজি সংখ্যার নাম নিয়ে গঠিত, একসাথে ধসে পড়ে এবং অন্য কিছুই না।

    • ইংরেজি ডিজিটের নামগুলি zero one two three four five six seven eight nine
  • আউটপুটটি স্ট্রিংগুলির একটি তালিকা বা একটি নতুন স্ট্রিং হতে পারে যেখানে অ-বর্ণমালা, খালি-খালি স্ট্রিংগুলি দিয়ে অঙ্কগুলি সীমিত করা হয়। (আপনার আউটপুট এছাড়াও পারে ঐচ্ছিকরূপে শুরুতে বা শেষে যেমন স্ট্রিং আছে, এবং বিভেদক সামঞ্জস্যপূর্ণ প্রয়োজন হবে না। তাই, এমনকি ভালো কিছু {{ zero0one$$two );জন্য একটি বৈধ (যদি কিম্ভুতকিমাকার) উত্তর হল zeroonetwo।)

  • বাইটস মধ্যে সংক্ষিপ্ত উত্তর।

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

three -> three
eightsix -> eight six
fivefourseven -> five four seven
ninethreesixthree -> nine three six three
foursixeighttwofive -> four six eight two five
fivethreefivesixthreenineonesevenoneeight -> five three five six three nine one seven one eight
threesevensevensixninenineninefiveeighttwofiveeightsixthreeeight -> three seven seven six nine nine nine five eight two five eight six three eight
zeroonetwothreefourfivesixseveneightnine -> zero one two three four five six seven eight nine

28
এটি একটি দুর্দান্ত চ্যালেঞ্জ! কাজটি বোঝা এবং যাচাই করা অত্যন্ত সহজ, তবে ব্যবহারের সঠিক পদ্ধতির খুব সুস্পষ্ট নয়। এবং সঠিক পদ্ধতির পছন্দ স্কোর একটি বিশাল পার্থক্য করতে পারে । +1 :)
ডিজেএমসিএমহেম

1
এই চিন্তাভাবনা করার পরে, আমি অরাজকতা গল্ফের উপর একই রকম, তবে আরও সরল চ্যালেঞ্জের কথা মনে রেখেছিলাম : হ্যাঁ ! এটি কিছু আশ্চর্যজনক সি উত্তর সঞ্চারিত। আমি শীঘ্রই তাদের মধ্যে একটি দেখতে আশা করি :)
লিন

আমি মনে করি না যে আমার সি উত্তরটি এর মতো যোগ্যতা অর্জন করে তবে আমি আশা করি যে এটি আমার চেয়ে আরও বিশৃঙ্খলা বোধের সাথে অন্যদের জন্য একটি সূচনার পয়েন্ট।
মাইকেল ডর্গান

আমি পুরোপুরি নিশ্চিত যে আমি এই একই চ্যালেঞ্জটি দেখেছি, তবে যেখানে আপনার আসল সংখ্যাটি প্রিন্ট করার কথা। আমি প্রায় নিশ্চিত আপনি এটি লিন পোস্ট করেছিলেন; তবে আমি লিংকটি হারিয়ে ফেলেছি, আমাকে এটি দিয়ে জড়িয়ে ধরছেন?
ম্যাজিক অক্টোপাস উরন

3
@ মিশেলডোরগান (বা অন্য কোনও সি কোডার), আপনি আমার বেফুঞ্জ উত্তরে আমি যে অ্যালগরিদমটি ব্যবহার করেছি তা একবার দেখতে চান। সি এর থেকে সরাসরি রূপান্তরটি আমাকে একটি 104 বাইট সমাধান পেয়েছিল, যা আমি মনে করি বিদ্যমান সি এর সমস্ত উত্তরকে মারধর করে। আমি বাজি দিতে ইচ্ছুক যা আরও বেশি সি গল্ফ দক্ষতার সাথে আরও উন্নত হতে পারে।
জেমস হোল্ডারেন্স

উত্তর:



17

সি (জিসিসি) , 89 80 76 75 72 71 70 69 বাইট

f(char*s){*s&&f(s+printf(" %.*s",""[(*s^s[2])%12],s)-1);}

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

(89) এক্সওআর হ্যাশের জন্য গ্যাস্ট্রোপনারকে জমা দেওয়া
(76) 1 ম এবং 3 য় ব্যবহারের ধারণার জন্য টবি স্পিডে ক্রেডিট ।
(75) ক্রেডিট মাইকেল Dorgan জন্য '0'48
(72) কন্ট্রোল অক্ষর সহ আক্ষরিক জন্য মাইকেল ডরগান এবং লিনকে ক্রেডিট ।
(69) লিনকেx?y:0 → এর জন্য ক্রেডিট →x&&y

f (char *s) {        /* K&R style implicit return type. s is the input. */
    *s&&f(           /* Recurse while there is input. */
        s+printf(    /* printf returns the number of characters emitted. */
            " %.*s", /* Prefix each digit string with a space. Limit
                      * how many bytes from the string to print out. */
            ""
                     /* Magic hash table, where the value represents
                      * the length of the digit string. The string
                      * is logically equivalent to
                      * "\04\01\05\03\04\05\05\04\04\01\03\03" */
            [(*s^s[2])%12],
                     /* The XOR hash (mod 12) */
            s)       /* The current digit. */
            -1);}    /* Subtract 1 for the space. */

11

পাইথন 2 , 50 বাইট

import re
re.compile('..[eox]|[tse]?....').findall

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

-3 লিনকে ধন্যবাদ ।
থেকে -4 ধন্যবাদ ঊরীয়েল এর উত্তর এর Regex।


3
নিস! import re;re.compile('…').findallকয়েক বাইট সংরক্ষণ করা উচিত। আমি এটি রিজেক্স গল্ফে পরিণত হওয়ার প্রত্যাশা করেছি :)
লিন

@ লিন ধরে থাকুন, শেষ না হওয়া পর্যন্ত অপেক্ষা করুন! :- পি সম্পাদনা: এটি 3 বাইট, আসলে
এরিক দ্য আউটগল্ফার

@ লিন এছাড়াও, আপনার পরিবর্তে কোড- গল্ফকে নিয়মিত-এক্সপ্রেশনে পরিণত করা উচিত ছিল । ;)
এরিক দি আউটগল্ফার

আমি একটি সি উত্তরের জন্য অপেক্ষা করছি, যা খুব আকর্ষণীয় হবে!
লিন

9

বেফুঞ্জ, 87 85 81 76 বাইট

<*"h"%*:"h"$_02g-v1$,*<v%*93,:_@#`0:~
"@{&ruX;\"00^ !: _>_48^>+:"yp!"*+%02p0

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

বেফুঞ্জের কোনও স্ট্রিং ম্যানিপুলেশন নির্দেশনা নেই, সুতরাং আমরা যা করি তা শেষ তিনটি অক্ষরের এক ধরণের হ্যাশ তৈরি করা হয়, কারণ আমরা সেগুলি প্রক্রিয়া করছি।

এই হ্যাশটি মূলত একটি তিন অঙ্কের, বেস -104 নম্বর। প্রতিবার নতুন চরিত্রটি পড়ার সময়, আমরা প্রাচীনতম চরিত্রটি থেকে মুক্তি পেতে 104 2 দিয়ে হ্যাশটি পরিবর্তন করি, নতুন চরিত্রের জন্য স্থান তৈরি করতে 104 দিয়ে গুন করি, তারপরে নতুন অক্ষর 27 এর ASCII মান যুক্ত করুন (নিশ্চিত করার জন্য) এটি উপচে পড়ে না)।

তুলনামূলক উদ্দেশ্যে, আমরা এই মানটি মড 3838 গ্রহণ করি, এটি মেমরিতে লিখি (এভাবে এটি 8 বিটকে ছাঁটাই করা হয়), যার ফলে ছোট সংখ্যার ফলাফল হয় যা বেফুঞ্জের পক্ষে পরিচালনা করা সহজ। তারপরে আমাদের যে হ্যাশগুলির সাথে তুলনা করতে হবে সেগুলি হল 0, 38, 59, 64, 88, 92, 114, 117 এবং 123 it এটি যদি কোনওর সাথে মেলে তবে আমরা জানি যে আমরা একটি চরিত্রের ক্রমটির মুখোমুখি হয়েছি যা একটি এর শেষ চিহ্নিত করে a সংখ্যা, সুতরাং আমরা একটি অতিরিক্ত স্থান আউটপুট এবং হ্যাশ শূন্য পুনরায় সেট।

যদি আপনি ভাবছেন যে কেন বেস 104, বা কেন মডেম 3817, সেই মানগুলি সাবধানতার সাথে বেছে নেওয়া হয়েছিল যাতে আমাদের তুলনায় হ্যাশ তালিকাটি যতটা সম্ভব কম বাইটে উপস্থাপন করা যেতে পারে।


বেশ সত্যই, এটি আমার কাছে বেকমোজি (ば け も じ) এর মতো দেখাচ্ছে। কি দারুন. অ্যালগরিদমের বিবরণ যদিও দুর্দান্ত এবং আমি এটি নিয়ে চিন্তা করব।
মাইকেল ডারগান

এবং, আমি এই শব্দটি মুজিবাকে (も じ ば け) হিসাবে দেখেছি মনে আছে। আপনি কীভাবে এই সংখ্যাগুলি খুঁজে পেয়েছেন (বেস 104, মোড 3187), @ জেমসহোল্ডারেন্স?
জাকারি

@ জ্যাচারý আমি একটি অল্প পাইথন স্ক্রিপ্ট লিখেছি যা বিভিন্ন প্রত্যাশিত ইনপুটগুলির বিরুদ্ধে চালিত হলে সঠিক ফলাফল আনতে পারে সেই জন্য বিভিন্ন বেস এবং মোড সংমিশ্রণ পরীক্ষা করে tested একবার আমি জানলাম কোন সংমিশ্রণগুলি কাজ করে, আমি বেফঞ্জ নম্বর জেনারেটরের মাধ্যমে ফলাফলটি হ্যাশ আউটপুটগুলি চালিত করেছি যা সংক্ষিপ্ততম কোড তৈরি করেছে তা সন্ধান করতে।
জেমস হোল্ডারেন্স

6

জাভা (ওপেনজেডিকে 8) , 55 46 43 বাইট

ফরটি 3 / ফ্রাউনফ্রোগের জন্য 9 বাইট সংরক্ষণ করা হচ্ছে

টাইটাসকে 3 বাইট সংরক্ষণ করা হচ্ছে

s->s.replaceAll("one|tw|th|f|z|s|.i"," $0")

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

সম্পাদনা: লাম্বদাসকে স্বাগত জানাতে এবং ব্যাখ্যা করার জন্য আপনাকে ধন্যবাদ!


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

@ কেভিন ক্রুজসেন আপনাকে ধন্যবাদ! আমি সত্যিই অবাক হয়েছি যে জাভা জাভাস্ক্রিপ্টের চেয়ে কম। সাধারণত যখন আমি চ্যালেঞ্জগুলি পড়ি তখন জেএস অনেক কম হয়।
লুকা এইচ

জাভাস্ক্রিপ্ট 2 বাইট সংক্ষিপ্ত হওয়া উচিত ( gপরিবর্তে রেজেেক্স প্রত্যয় All)।
নীল

@ নীল এটি এখানে দীর্ঘ কারণ এটি এর f=(s)=>পরিবর্তে ব্যবহার করছে s->যা 4 বাইট সংক্ষিপ্ত।
লুকা এইচ

1
@ লুকাএইচ - ফ্রেউনিফ্রোগের পরামর্শ অনুসারে, আপনি আপনার কয়েকটি অক্ষরের স্ট্রিংকে একক অক্ষরে কমিয়ে আনতে পারেন: z | f | s এর পরিবর্তে ze | fo | fi | si | se /
Forty3

6

সি (জিসিসি) , 179 159 146 139 137 116 107 103 102 বাইট

সম্পাদনা 1: ( মিঃ এক্সকোডারের কাছ থেকে দেওয়া পরামর্শগুলি - ধন্যবাদ! - আমার ম্যাক্রো সংস্করণটি আপনার আকারের মতোই ছিল তবে আমি তোমার চেয়ে ভাল পছন্দ করি))

সম্পাদনা 2: পরিবর্তিত চর পৃথক কলগুলির সাথে তুলনা করেstrchr()

সম্পাদনা 3: কে ও আর এর বিভিন্ন ঘোষণা (ইও!!)

4 সম্পাদনা করুন: যখন 1 ম্যাক্রো পর্যাপ্ত নয় ...

5 সম্পাদনা করুন: উপরে প্রস্তাবিত নতুন অ্যালগরিদম দিয়ে আবার করুন। এই দুর্দান্ত ধারণার জন্য জেমস হোল্ডারেন্সকে ধন্যবাদ !

6 সম্পাদনা করুন: 0 সেটটি স্বয়ংক্রিয়ভাবে সেখানে যাওয়ার মতো মনে হয়েছে - মাস্টার স্তরের কোড গল্ফ কৌশলগুলি (কমা, প্রিন্টফ ট্রিক ইত্যাদি) ব্যবহৃত হয়েছে - ধন্যবাদ গ্যাস্ট্রোপনার !

সম্পাদনা 7: মেমচার ব্যবহার করুন এবং জেমস হোল্ডারেন্স দ্বারা নির্দেশিত একটি বাগ স্থির করে ।

সম্পাদনা 7:&& প্রতিস্থাপন করতে চূড়ান্ত চেক ব্যবহার করুন ?- ধন্যবাদ jxh

c,h;f(char*s){while(c=*s++)putchar(c),h=h%10816*104+c%27,memchr("&;@X\\ru{",h%3817,9)&&putchar(h=32);}

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

অ-গল্ফযুক্ত (যা এখনও সত্যই খুব গল্ফ ...)


int c;
int h;
void f(char*s)
{
    while(c=*s++)
        putchar(c),
        h=h%10816*104+c%27,
        memchr("&;@X\\ru{",h%3817,9)?putchar(h=32):1;
}

পুরানো, স্ট্রেট ফরোয়ার্ড গ্রেপ-এসকি সমাধান:

#define p putchar
#define q c=*s++
c,x;f(char*s){while(q){p(c);x=strchr("tse",c);p(q);p(q);if(!strchr("eox",c)){p(q);if(x)p(q);}p(' ');}}

পুরাতন, ক্লিনার সংস্করণ।

// Above code makes a macro of putchar() call.

void f(char *s)
{
    char c;
    while(c = *s++)
    {
        putchar(c);
        int x = strchr("tse", c);

        putchar(*s++);
        putchar(c=*s++);

        if(!strchr("eox", c))
        {
            putchar(*s++);
            if(x)
            {
                putchar(*s++);
            }
        }       
        putchar(' ');
    }
}

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


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

159 বাইট দ্বারা #defineing putcharএবং অপ্রয়োজনীয় বন্ধনী একজোড়া সরিয়ে ফেলা হয়।
মিঃ এক্সকডার

2
কিছুটা কুরুচিপূর্ণ, তবে পরিবর্তে 136 বাইট ব্যবহার #define p putchar(করুন (ওপেন প্রথম বন্ধনী নোট করুন)।
টম কার্পেন্টার

1
109 বাইটc,h=0;f(char*s){while(c=*s++)putchar(c),h=h%10816*104+c%27,c=h%3817,printf(" "+!(c&&strchr("&;@X\\ru{",c)));}
গ্যাস্ট্রোপনার

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

5

জাভাস্ক্রিপ্ট, 66 57 52 44 41 বাইট

s=>s.replace(/one|t[wh]|.i|[fsz]/g," $&")

বেশ নিষ্পাপ, কিন্তু এটি কাজ করে।

2 টি চর ব্যবহার করার জন্য ফ্রাউনফ্রোগের দ্বারা দুর্দান্ত ক্যাচ .. "একটি" ব্যতীত যা খাঁটি 2 চর চেক জেরোনিনকে গোলমাল করতে পারে। সম্পাদনা: একক fএবং sফ্রাউনফ্রগের ভাল ক্যাচ ছিল যা আমি আমার প্রথম দুটি গল্ফকে উপেক্ষা করেছি।

ধন্যবাদ, নিল, একটি নামবিহীন ল্যাম্বদার পরামর্শের জন্য এবং একক চর ব্যবহার করতে সক্ষম zহয়ে 52 এর নিচে নেমে গেছে।

তিতাস একটি ছোট RegEx নিয়ে আসে। আমি অনুভব করি আমরা শেষ পর্যন্ত উরিলের রেজেক্সের দিকে যাচ্ছি।


আপনি যদি দুটি অক্ষর ব্যবহার করেন এবং শেষ পর্যন্ত 'চালু' করেন তবে এটি কি ভেঙে যায়?
ফ্রাউনফ্রোগ

আমি ভাবছিz|tw|th|f|s|ei|ni|on
ফ্রিউনিফ্রোগ

1
@ ফ্রাউনফ্র্যাগ ও প্রথমে আসে তাই এটি প্রথমে স্বীকৃত।
ঊরীয়েল

1
on|t[wh]|.i|[fsz](-4 বাইট)
টাইটাস

2
@Titus - দুর্ভাগ্যবশত, on|ইচ্ছা ম্যাচ zeronineরেন্ডারিংzer onine
Forty3


5

সি, 103 99 বাইট

char*r="f.tzuonresn.xgv";f(char*s){*s&&f(s+printf("%.*s ",(strrchr(r,s[2])-strchr(r,*s))%10,s)-1);}

এটি কোনও অক্ষর এনকোডিংয়ের জন্য কাজ করে (EBCDIC এর মতো বিশ্রী ব্যক্তি সহ), কারণ এটি ইনপুট অক্ষরের সংখ্যার মান ব্যবহার করে না। পরিবর্তে, এটি একটি যাদু স্ট্রিংয়ে প্রথম এবং তৃতীয় অক্ষর সনাক্ত করে। এর মধ্যে দূরত্ব নির্দেশ করে যে প্রতিটি মুদ্রণের সাথে কত অক্ষর অগ্রসর হবে।

পরীক্ষা প্রোগ্রাম

#include <stdio.h>
int main(int argc, char **argv)
{
    for (int i = 1;  i < argc;  ++i) {
        f(argv[i]);
        puts("");
    }
}

1
কিছু বাইট পুনরাবৃত্তি ব্যবহার করে সংরক্ষণ করা যায়: tio.run/##XY/…
jxh

4

জে , 37 35 বাইট

rplc'twthsiseeinionzef'(;LF&,)\~_2:

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


2
শীতল বিকল্প সমাধান! আমি চেষ্টা করেছি f=:[:>'..[eox]|[tse]?....'&rxallএবং এটি ইন্টারপেটারে কাজ করেছে, তবে টিআইওতে কাজ করে না।
গ্যালেন ইভানভ

এটি সত্যিই চালাক, খুব ভাল
জোনাহ

@ গ্যালেনিভানভ টিআইওর সর্বশেষ প্রকাশ রয়েছে, এটি জে

4

সি (জিসিসি) , 106 বাইট 104 বাইট

-২ বাইট @jxh ধন্যবাদ

c;f(char*s){char*t=" $&=B*,29/?";while(*s)for(c=4+(strchr(t,(*s^s[1])+35)-t)/4;c--;)putchar(c?*s++:32);}

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

এক্সওআর সত্যই আমাদের সবচেয়ে বড় মিত্র।


এস ++ ট্রিকটি পছন্দ করুন। সুন্দর হ্যাশ
মাইকেল ডারগান

1
s[1]খাটো হবে।
jxh

@jxh ভাল লাগছে! আপডেট করা হয়েছে।
গ্যাস্ট্রোপনার



3

পিপ , 27 বাইট

aR`[zfs]|one|[ent][iwh]`s._

কমান্ড-লাইন আর্গুমেন্ট হিসাবে ইনপুট নেয়। এটি অনলাইন চেষ্টা করুন!

সরল রেজেক্স প্রতিস্থাপন, প্রতিটি ম্যাচের আগে একটি স্থান সন্নিবেশ করায় [zfs]|one|[ent][iwh]


চুরির bandণ গ্রহণের ব্যান্ডওয়াগনে ঝাঁপিয়ে পড়ে উরিলের রেইগেক্স 23 বাইট দেয় ( -sপতাকা সহ):

a@`..[eox]|[tse]?....`


3

জেলি ,  23  21 বাইট

ḣ3OP%953%7%3+3ɓḣṄȧṫḊÇ

একটি সম্পূর্ণ প্রোগ্রাম মুদ্রণ লাইন-ফিড পৃথক আউটপুট। দ্রষ্টব্য: একবার এটি হয়ে গেলে এটি বারবার খালি লাইনগুলি "চিরতরে" মুদ্রণ করে (একটি বিশাল পুনরাবৃত্তি সীমা বা সেগ-ফল্ট পর্যন্ত)

এটি অনলাইন চেষ্টা করুন! (টিআইও আউটপুট একত্রিত হয়, একটি স্থানীয় বাস্তবায়ন লাইন দ্বারা লাইন প্রিন্ট করবে)

কিভাবে?

অক্ষরের একটি তালিকা দিয়ে শুরু, প্রোগ্রামটি বারবার:

  1. কিছু অরডিনাল গণিত ব্যবহার করে অক্ষরের তালিকার প্রথম শব্দের দৈর্ঘ্য সন্ধান করে;
  2. শব্দটি একটি লাইনফিডের সাথে মুদ্রণ করে; এবং
  3. অক্ষরের তালিকার শীর্ষ থেকে শব্দটি সরিয়ে দেয়

অক্ষরের তালিকার বর্তমান তালিকার প্রথম তিনটি অক্ষর (অগত্যা প্রথম শব্দের অংশ) পরিদর্শন করে প্রথম শব্দের দৈর্ঘ্য নির্ধারণ করা হয়। প্রোগ্রাম এগুলিকে অর্ডিনালে রূপান্তরিত করে, তাদের একসাথে গুণায়, ফলাফলটি 953 দ্বারা মডুলোস, মডিউলগুলি সাত দ্বারা, মডিউলগুলি যে তিনটি করে এবং তিনটি যুক্ত করে:

word   head3  ordinals       product  %953  %7  %3  +3 (=len(word))
zero   zer    [122,101,114]  1404708   939   1   1   4
two    two    [111,110,101]  1233210    28   0   0   3
one    one    [116,119,111]  1532244   773   3   0   3
three  thr    [116,104,114]  1375296   117   5   2   5
four   fou    [102,111,117]  1324674     4   4   1   4
five   fiv    [102,105,118]  1263780   102   4   1   4
six    six    [115,105,120]  1449000   440   6   0   3
seven  sev    [115,101,118]  1370570   156   2   2   5
eight  eig    [101,105,103]  1092315   177   2   2   5
nine   nin    [110,105,110]  1270500   151   4   1   4

ḣ3OP%953%7%3+3ɓḣṄȧṫḊÇ - Main link, list of characters           e.g. "fiveeight..."
ḣ3              - head to index three                                "fiv"
  O             - ordinals                                           [102,105,118]
   P            - product                                            1263780
    %953        - modulo by 953                                      102
        %7      - modulo by seven                                    4
          %3    - modulo by three                                    1
            +3  - add three                                          4

              ɓ - dyadic chain separation swapping arguments...
... ḣṄȧṫḊÇ ...
    ḣ         - head to index                                        "five"
     Ṅ        - print the result plus a line-feed and yield the result
       ṫ      - tail from index                                      "eeight..."
      ȧ       - and (non-vectorising)                                "eeight..."
        Ḋ     - dequeue                                               "eight..."
         Ç    - call the last link (Main*) as a monad with this as input
              -       * since it's the only link and link indexing is modular.

1
এটি অনুমোদিত কিনা তা আমি নিশ্চিত নই । (সিরিয়াসলি, যখন দুটি অতি উচ্চারণের মেটা-উত্তর একে অপরের বিপরীতে বলে তখন আপনি কী করবেন?)
janরঞ্জন জোহানসেন

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

অবশ্যই, তবে আমি মনে করি না যে ওপি একটি অসীম শেষের স্ট্রিং বিবেচনা করেছে। এবং মেটা-প্রশ্নটি প্রথমে আউটপুট প্রিন্ট করা হয় সেই ক্ষেত্রে সম্পর্কে স্পষ্টভাবে।
janrjan জোহানসেন

আমি মনে করি এটি প্রয়োজনীয়তার চেতনা পূরণ করে (যদি এটি উদাহরণস্বরূপ, অসীম খালি স্ট্রিং মুদ্রিত হয় এবং তবে যে শব্দগুলি আমি তর্ক করতে পারি না)
জোনাথন অ্যালান

সুতরাং, আমি অনুমান করি যে "মার্টিনের শিবিরের" এটি যদি কোনও প্রোগ্রাম এবং ন্যায্যতা প্রমাণ করতে পারে ... ":)
জোনাথন অ্যালান

3

সি 168 ,145,144, 141 বাইট

সম্পাদনা: টি'র মতো 'i' থেকে 1 টি চেষ্টা করা হয়েছে

A, B; মূল (ঝ)

শীর্ষস্থানীয় হোয়াইটস্পেস থেকে মুক্তি পাওয়ার জন্য,
তবে তিন, সাত বা আট দিয়ে শুরু হয়ে ইনপুটটি ভেঙে যায়

141

#define s|a%1000==
a,i;main(b){for(;~scanf("%c",&b);printf(" %c"+!!i,b),a|=b%32<<5*i++)if(i>4|a%100==83 s 138 s 116 s 814 s 662 s 478)a=i=0;}

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

144

a,i;main(b){for(;~(b=getchar());printf(" %c"+!!i,b),a=a*21+b-100,++i)if(i>4|a==204488|a==5062|a==7466|a==23744|a==21106|a==6740|a==95026)a=i=0;}

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

168

i,a;main(b){for(;~scanf("%c",&b);printf(" %c"+!!i,b),a|=b<<8*i++)if(i>4|a==1869768058|a==6647407|a==7305076|a==1920298854|a==1702259046|a==7891315|a==1701734766)a=i=0;}

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

Ungolfed

i,a;main(b){
for(;~scanf("%c",&b); // for every char of input
printf(" %c"+!!i,b), // print whitespace if i==0 , + char
a|=b<<8*i++ // add char to a for test
)
if(
i>4| // three seven eight
a==1869768058|      // zero
a==6647407|        // one
a==7305076|       // two
a==1920298854|   //four
a==1702259046|  //five
a==7891315|    //six
a==1701734766 //nine
) a=i=0; //reset i and a
}

ইনট কনস্ট্যান্টগুলি << 8 স্থানান্তরিত করে অপ্রয়োজনীয় বড় হয়ে যায়
তবে আপনি যদি স্ট্রিংগুলির সাথে কোনওভাবে তুলনা করতে পারেন তবে এটি সবচেয়ে স্বাভাবিক হওয়া উচিত

146 স্ট্রিং তুলনা ব্যবহার করে

#define s|a==*(int*)
a,b;main(i){for(;~(b=getchar());printf(" %c"+!!i,b),a|=b<<8*i++)if(i>4 s"zero"s"one"s"two"s"four"s"five"s"six"s"nine")a=i=0;}

স্ট্রিং তুলনা ব্যবহার

obfuscated

#define F(x)if(scanf(#x+B,&A)>0){printf(#x,&A);continue;}
B;A;main(i){for(;i;){B=1;F(\40e%4s)F(\40th%3s)F(\40se%3s)F(\40o%2s)B=2;F(\40tw%1s)F(\40si%1s)B=1;F(\40%4s)i=0;}}


2

বেশ দীর্ঘ। আপনি এটি গল্ফ স্বাগত জানাই।

আর , 109 বাইট

function(x)for(i in utf8ToInt(x)){F=F+i;cat(intToUtf8(i),if(F%in%c(322,340,346,426,444,448,529,536,545))F=0)}

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


অঙ্কগুলির পরিবর্তে ইউনিকোড অক্ষর ব্যবহার করার কোনও উপায়?
মাইকেল ডারগান

চমৎকার আবেদন intToUtf8! Regexp ব্যবহার করে 90 টি বাইট আলাদা পদ্ধতি ব্যবহার করে সম্ভব হবে:function(x,p=paste,z=p("(",p(c("zero",broman::numbers),collapse="|"),")"))gsub(z,"\\1 ",x)
মাইকেল এম


2

পাইথন 3 (কোনও রেজেক্স নেই) , 85 বাইট

i=3
while i<len(s):
	if s[i-3:i]in'ineiveroneghtwoureesixven':s=s[:i]+' '+s[i:]
	i+=1

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


2
পিপিসিজিতে আপনাকে স্বাগতম!
লাইকনি

এটি দুর্দান্ত, তবে একটি সম্পূর্ণ প্রোগ্রামে ইনপুট নেওয়ার জন্য কোডটি অবশ্যই অন্তর্ভুক্ত করতে হবে।
জোনাথন অ্যালান

সুতরাং, একটি সম্পূর্ণ প্রোগ্রাম হিসাবে 104 বাইট । তবে আপনি ব্যবহার করে 4 টি সঞ্চয় করতে পারবেন while s[i:]এবং তারপরে আপনি পুনরাবৃত্তির জন্য জমা দিয়ে এটি 93 বাইটে নামিয়ে আনতে পারেন lambda(ফাংশনগুলিকে কেবল নিজের মুদ্রণের পরিবর্তে আউটপুট ফিরিয়ে আনতে হবে)।
জোনাথন অ্যালান

2

এক্সেল, 181 বাইট

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"z"," z"),"on"," on"),"tw"," tw"),"th"," th"),"f"," f"),"s"," s"),"ei"," ei"),"ni"," ni")

সামনে একটি স্থান স্থানগুলি: z, on, tw, th, f, s, ei,ni


2

জেড 80 এসেম্বল, 46 45 বাইট

; HL is the address of a zero-terminated input string
; DE is the address of the output buffer

Match5: ldi                                 ; copy remaining characters
Match4: ldi
Match3: ld a,32 : ld (de),a : inc de        ; and add space after a matched word.

Uncollapse:

        ld a,(hl) : ldi : or a : ret z      ; copy first byte (finish if it was zero)
        ex af,af'                           ; and save its value for later.

        ldi : ld a,(hl) : ldi               ; copy second and third bytes

        cp 'e' : jr z,Match3                ; is the third letter 'e' or 'o' or 'x'?
        cp 'o' : jr z,Match3
        cp 'x' : jr z,Match3

        ex af,af'                           ; now look at the first letter

        cp 'e' : jr z,Match5                ; is it 't' or 's' or 'e'?
        sub 's' : jr z,Match5
        dec a : jr z,Match5
        jr Match4

(ইউরাইলের শীতল রেজেক্সকে একটি রেজেক্স-বন্ধুত্বপূর্ণ পরিবেশের সাথে অভিযোজিত করতে মজা লাগছিল)।


1

জেলি , 40 39 বাইট

“¢¤Ƙƒ⁺6j¹;Ċ-ḶṃżṃgɼṘƑUẏ{»Ḳe€€@ŒṖẠ€TḢịŒṖK

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

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

“¢¤Ƙƒ⁺6j¹;Ċ-ḶṃżṃgɼṘƑUẏ{»Ḳe€€@ŒṖẠ€TḢịŒṖK
“¢¤Ƙƒ⁺6j¹;Ċ-ḶṃżṃgɼṘƑUẏ{»                 = the compressed string of the digit names
                        Ḳ                = split at spaces
                         e€€@ŒṖ          = check whether each member of each partition of the argument is a digit.
                               Ạ€        = A function that checks whether all values of an array are true, applied to each element.
                                 T       = Finds the index of each truthy element 
                                  Ḣ      = Grab the first element, since we have a singleton array
                                    ịŒṖ  = The previous command gives us the index, partition that splits the input into digits. This undoes it and gives us the partition.
                                       K = Join the array of digits with spaces                



1

পাইথন 3 , কোনও রেজেক্স নয়,  83 68 65  63 বাইট

-১৫ লিনকে (একক ফাংশনে রিঅ্যাক্টর)
ধন্যবাদ -৩ লিনকে আরও ধন্যবাদ (আরও গাণিতিকের সাথে তালিকায় সূচি দেওয়া এড়ানো)
... আরও ২ টি বাইট (নেতিবাচক মডুলোসের সাথে বন্ধন এড়ানো ) এর আরও একটি সাশ্রয় ঘটায় :)

def f(s):h=ord(s[0])*ord(s[1])%83%-7%-3+5;print(s[:h]);f(s[h:])

এমন একটি ফাংশন যা শব্দগুলি নতুন লাইনের দ্বারা পৃথক করে এবং তারপরে একটি উত্থাপন করে IndexError

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


আমি এটির অনেক পরে পর্যালোচনা করছি এবং বুঝতে পারছি এটি 68 বাইট হতে পারে:def f(s):h=[4,5,3][ord(s[0])*ord(s[1])%83%7%3];print(s[:h]);f(s[h:])
লিন

ওহ, h(s)h(s)আমি কীভাবে খেয়াল করিনি ?! ধন্যবাদ লিন!
জোনাথন অ্যালান

আমি নিশ্চিত না কীভাবে আমি এই প্রশ্নে ফিরে আসছি এবং নতুন জিনিসগুলি লক্ষ্য করছি, তবে h=(ord(s[0])*ord(s[1])%83%7+1)%3+3এটি 65 বাইট! :)
লিন

হেই, লিনকে ধন্যবাদ, যে আরও দুটি বাইটকেও গল্ফ করে ফেলে!
জোনাথন অ্যালান


0

গণিত, 125 বাইট

(s=#;While[StringLength@s>2,t=1;a="";While[FreeQ[IntegerName/@0~Range~9,a],a=s~StringTake~t++];Print@a;s=StringDrop[s,t-1]])&


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

টিআইও "কান্ট্রিডাটা" (???) সম্পর্কে ত্রুটি বার্তা প্রকাশ করে (???)
কেন হয় তা আমি জানি না, তবে গাণিতিকের উপর শ্রুতিমধুরতা কার্যকর হয়



0

q / kdb +, 59 51 বাইট

সমাধান:

{asc[raze x ss/:string`z`one`tw`th`f`s`ei`ni]cut x}

উদাহরণ:

q){asc[raze x ss/:string`z`one`tw`th`f`s`ei`ni]cut x}"threesevensevensixninenineninefiveeighttwofiveeightsixthreeeight"
"three"
"seven"
"seven"
"six"
"nine"
"nine"
"nine"
"five"
"eight"
"two"
"five"
"eight"
"six"
"three"
"eight"

ব্যাখ্যা:

দ্রুত সমাধান, সম্ভবত আরও ভাল এবং আরও গল্ফযোগ্য পদ্ধতির।

{asc[raze x ss/:string`z`one`tw`th`f`s`ei`ni]cut x} / ungolfed solution
{                                                 } / lambda with implicit x as input
                                             cut x  / cut x at indices given by left
 asc[                                       ]       / sort ascending
                string`z`one`tw`th`f`s`ei`ni        / string list ("z","one",...)
          x ss/:                                    / string-search left with each right
     raze                                           / reduce down list

নোট:

কিছু সাধারণ গল্ফিংয়ের সাথে 46 বাইট, কে কলগুলির সাথে কে এর পরিবর্তে, তবে এখনও একটি বিশাল সমাধান।

asc[(,/)x ss/:($)`z`one`tw`th`f`s`ei`ni]cut x:

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