আসল সংখ্যা (দ্বিতীয়)


18

এই চ্যালেঞ্জ মূলত অভিন্ন এই এক মাত্র এক পার্থক্য সঙ্গে এটা এখন স্ট্রিং কোথাও অক্ষর এলোমেলো অনুমোদিত হয়।

দৃশ্যপট

জন একটি গুরুত্বপূর্ণ নম্বর আছে, এবং তিনি চান না অন্যরা এটি দেখতে পারে।

তিনি নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করে নম্বরটি এনক্রিপ্ট করার সিদ্ধান্ত নিয়েছিলেন:

তার সংখ্যা সর্বদা একটি হ্রাস-না করে ক্রম (যেমন। "1123")

তিনি প্রতিটি অঙ্ককে ইংরেজি শব্দের মধ্যে রূপান্তরিত করেছিলেন। (যেমন। "123" -> "ONETWOTHREE")

এবং তারপরে, বর্ণগুলি এলোমেলোভাবে পুনরায় সাজান। (যেমন। "ONETWOTHREE" -> "EEWOOHRNTET")

জন অনুভব করেছিলেন যে এটি করতে তার সংখ্যা নিরাপদ। আসলে, এ জাতীয় এনক্রিপশন সহজেই ডিক্রিপ্ট করা যায় :(


কার্য

এনক্রিপ্ট করা স্ট্রিং গুলি দেওয়া আপনার কাজটি হ'ল এটি ডিক্রিপ্ট করে মূল নম্বরটি ফিরিয়ে দেওয়া।


বিধি

  • এটি কোড গল্ফ, তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর ins
  • আপনি ধরে নিতে পারেন যে ইনপুট স্ট্রিংটি সর্বদা বৈধ
  • ইনপুট স্ট্রিংয়ে কেবল বড় হাতের অক্ষর থাকে
  • আসল সংখ্যাগুলি সর্বদা আরোহী ক্রমে সাজানো থাকে
  • আপনি স্ট্রিং বা পূর্ণসংখ্যার বিন্যাসে নম্বরটি ফিরে আসতে পারেন
  • অক্ষরগুলি কেবল একটি শব্দের মধ্যে বদলে যাবে, পুরো স্ট্রিংয়ের মধ্যে নয়। অক্ষরগুলি স্ট্রিংয়ের যে কোনও জায়গায় পরিবর্তিত হতে পারে।
  • সংখ্যাগুলি 1 থেকে 9 সহ অন্তর্ভুক্ত থাকবে ( ONEথেকে NINE)

সম্ভাব্য আনস্র্যাম্বলড স্ট্রিং

সংখ্যাগুলি থেকে স্ট্রিংগুলিতে রূপান্তরিত হওয়ার ঠিক পরে স্ট্রিংগুলির একটি তালিকা এখানে রয়েছে:

 1 -> ONE 
 2 -> TWO
 3 -> THREE
 4 -> FOUR
 5 -> FIVE
 6 -> SIX
 7 -> SEVEN
 8 -> EIGHT
 9 -> NINE

উদাহরণ

"NEO" -> 1

"NWEOOT" -> 12

"TOEERWNEHOT" -> 123

"IHNEVGENNEISTE" -> 789

"WEETVTRFSVUHNEEFRHIXEOINSNIEGTOONIEE" -> 123456789

"EWHEWROETOTTON" -> 1223

"ONEWESTV" -> 27 (ধন্যবাদ, ইটিএইচ প্রডাকশনস!)


7
প্রস্তাবিত পরীক্ষার কেস: এর মতো কিছু "ONEWESTV" -> 27(আসলে এমন একটি সংখ্যার অন্তর্ভুক্ত রয়েছে যা বাস্তবে উপস্থিত হয় না)
ETH প্রোডাকশনগুলি

@ এথ প্রডাকশনগুলি দুর্দান্ত ধারণা! যোগ করা হয়েছে।
ক্রিশ্চিয়ান লুপাস্কু

কেন "জিরো" নেই?
রোজলুপি

@ রোসলুপ জন নেতৃস্থানীয় জিরোদের ঘৃণা করেন ...
ক্রিশ্চিয়ান লুপাস্কু

উত্তর:


9

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

c=map(input().count,"OWHUFXSGIQ")
i=4
for j in"71735539994":c[i*2]-=c[int(j)];i=-~i%5
s=""
for n in c:i+=1;s+=`i`*n
print s

একটি সম্পূর্ণ প্রোগ্রাম উদ্ধৃত ইনপুট গ্রহণ এবং জন এর নম্বর মুদ্রণ।

এটি অনলাইন চেষ্টা করুন! অথবা একটি পরীক্ষা-স্যুট দেখুন

কিভাবে?

আসুন "NEONSEXTOWNII" উদাহরণটি নিয়ে কাজ করুন (1269 উপার্জন করতে এবং কিছুটা অবসর স্যুইট ল্যারি- স্পেক হন!)

প্রথম c=map(input().count,"OWHUFXSGIQ")ইনপুট এবং গন্য সংখ্যা লাগে প্রতিটি OWHUFXSGIQ- এই, যাতে আরোহী, 2,4,6 সঙ্গে প্রতিটি সংখ্যা প্রদর্শিত অক্ষর, এবং 8 তাদের "নিজস্ব" অক্ষর (ভুগেন WUXG), প্লাস একটি অতিরিক্ত অক্ষর, Qএকটি শূন্য সংযোজন করতে শেষ পর্যন্ত এবং ফলাফলের তালিকার দৈর্ঘ্যটি এমনকি করুন। উদাহরণস্বরূপ:

[2,1,0,0,0,1,1,0,2,0] <- c
 O W H U F X S G I Q  <- is the counts of these letters
 1 2 3 4 5 6 7 8 9 0  <- which "relate to" these digits in John's number
   2   4   6   8   0  <- these will be correct as the letters are unique to their words

1, 3, 5, 7, এবং 9 এর জন্য এন্ট্রিগুলিকে অন্য বর্ণগুলির প্রাচুর্য সংশোধন করতে সামঞ্জস্য করা দরকার। এটি পরবর্তী লুপ দ্বারা সঞ্চালিত হয়:

i=4
for j in"71735539994":c[i*2]-=c[int(j)];i=-~i%5

নোট করুন যে সামঞ্জস্য করতে প্রবেশকারীরা হ'ল বিকল্প বিকল্প (1,3,5,7,9,1,3,5, ...), তাই আমরা প্রতিটি পদক্ষেপে সূচক ভেরিয়েবলের জন্য দুটি এবং মডিউল 10 এ যোগ করতে পারি যদি আমাদের একাধিকবার ট্র্যাভার করা প্রয়োজন (যা আমরা করি)। কিছু বাইট সংরক্ষণ করতে আমরা এক দ্বারা এবং ইনডিউলের দ্বিগুণ ব্যবহার করতে পারি mod
যেহেতু 9 এর জন্য সামঞ্জস্য করার জন্য আমরা সেখানে শুরু হওয়া সর্বাধিক কাজ প্রয়োজন - এটি 8 সূচীতে থাকে তাই আমরা শুরু করি i=4। স্ট্রিংটি প্রতিটি পর্যায়ে মুছে ফেলার মানগুলির "71735539994"সূচকগুলি দেয়, j(যেখানে আমরা নিশ্চিত করেছি যে নবম সূচকটি "Q"তৈরি করার সময় ব্যবহার করে শূন্য থাকবে c); c[i*2]-=c[int(j)]প্রতিটি সমন্বয় এবং সঞ্চালিত i=-~i%5প্যাচসমূহ iপরের সূচক যাও (যেখানে -~iহয় -(-1-i)বা i+1সংরক্ষণ প্রথম বন্ধনী (i+1)%5) পালনi*2এর সীমার মধ্যে c
সুতরাং আমরা প্রথমে সূচকে j=7সেই সূচক থেকে i*2=8সংখ্যাটি বিয়োগ করি, "I" এর সংখ্যা থেকে গণিত "জি" এর সংখ্যাকে বিয়োগ করে, "আট" এর (সঠিক) সংখ্যায় "NINE" গণনা সমন্বয় করি ( যার একটি "আমি" রয়েছে)। তারপরে আমরা i=0( -~4%5 = (4+1)%5 = 0) এ চলে যাই , সূচকটি উল্লেখ করে i*2 = 0যা "এক" এর জন্য এবং সূচকগুলিতে j=1"ডাব্লু" গণনা এন্ট্রি অনুসারে পাওয়া মানটি বিয়োগ করে এবং "ও" এর গণনা নীচে সামঞ্জস্য করে। লুপের শেষে আমাদের সংশোধন গণনা রয়েছে:

[1,1,0,0,0,1,0,0,1,0] <- c   (for 1223333448 it would be: [1,2,4,2,0,0,0,1,0,0])
 1 2 3 4 5 6 7 8 9 0

সুতরাং যা অবশিষ্ট রয়েছে তা cএখন কী উপস্থাপন করে তা মুদ্রণ করা ( 1269)। iএখন ফিরে এসেছে 0, সুতরাং আমরা এটি লুপের শুরুতে বৃদ্ধি করি এবং এটি আমাদের অঙ্ক হিসাবে ব্যবহার করি:

s=""
for n in c:i+=1;s+=`i`*n
print s

পিছনের `i`টিকগুলি, পাইথন 2 শর্টহ্যান্ড repr(i)যার জন্য কোনও বস্তুর একটি স্ট্রিং প্রতিনিধিত্ব (স্ট্রিং হিসাবে প্রশ্নে অঙ্কিত অক্ষর) পায় এবং একটি সংখ্যার মাধ্যমে একটি স্ট্রিংকে বহুগুণে পুনরুদ্ধারের নতুন স্ট্রিং তৈরি করে (এখানে আমরা কেবল বলি থেকে n=0ফিরে দেখাই থেকে এবং বলে পালন বাঁক যেমন , কিন্তু এটি বৃহত্তর ধনাত্মক পূর্ণসংখ্যা জন্য কাজ করে, তাই হয়ে উদাহরণস্বরূপ।)`i`"5"""n=1"6""6""3"*4"3333"


8

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

[{‘Z€µ‚•„í†ìˆÈŒšï¿Ÿ¯¥Š‘#NSèJ{Q#

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

ব্যাখ্যা

[                                   # start loop
 {                                  # sort input
  ‘Z€µ‚•„í†ìˆÈŒšï¿Ÿ¯¥Š‘#            # push the list ['Z','ONE','TWO','THREE','FOUR','FIVE','SIX','SEVEN','EIGHT','NINE']
                        N           # push the current iteration counter
                         S          # split to list of digits
                          è         # index into the list with each
                           J{       # join to string and sort
                             Q#     # if the strings are equal, exit loop
                                    # implicitly print iteration counter

বড় ইনপুট জন্য খুব অদক্ষ।


‘Z€µ‚•„í†ìˆÈŒšï¿Ÿ¯¥Š‘# # push the list ['Z','ONE','TWO','THREE','FOUR','FIVE','SIX','SEVEN','EIGHT','NINE']: আপনি কি কিছুটা ব্যাখ্যা করতে পারেন, আমি বুঝতে পারি যে কোনও স্ট্রিং কীভাবে উত্পন্ন করা যায়।
সিরিল গ্যান্ডন

1
@ সাইরিলগ্যান্ডন: স্থান পৃথক শব্দের একটি উচ্চ-কেস সংকুচিত স্ট্রিং সীমিত করে । Zমানে Z। অন্যান্য সমস্ত 2-প্রতীকী জোড় 05AB1E এর অভিধান থেকে সংকুচিত শব্দটি বোঝায় । উদাহরণস্বরূপ €µহিসাবে অনুবাদ ONE
এমিগিনা

ভাল, আপনি কিভাবে একটি স্ট্রিং সংক্ষেপে অভিধানে থাকে? এই জুটির ইউনিকোড মান দিয়ে কিছু?
সাইরিল গ্যান্ডন

1
@ সিরিলগ্যান্ডন: আপনি ডিকের শব্দের লাইন নম্বরটি নিন ( হ্যালো জন্য 2420 ) এবং বিয়োগ 1। এটি আমাদের দেয় 2419। প্রতীক আমরা প্রয়োজন চিহ্ন দ্বারা অনুসরণ করা হয় 24এবং 19ডক্স । আমাদের যদি এই হল 24=Ÿএবং 19=™, তাই HELLOহবে‘Ÿ™‘
Emigna

1
আদনান রচিত একটি কম্প্রেসারও রয়েছে যা আপনি বেশিরভাগ ক্ষেত্রে ব্যবহার করতে পারেন। লিঙ্কটি কিছুটা দীর্ঘ, তবে আপনি এটি 05AB1E চ্যাট রুমে খুঁজে পেতে পারেন । এটি আরও জিজ্ঞাসা আছে কিনা জিজ্ঞাসা করার জন্য এটি একটি ভাল জায়গা :)
এমিগানা

8

রেটিনা , 112 97 বাইট

O`.
}`GH
8
X
6
H
3
+`F(.*)O(.*)U
4$1$2
+`O(.*)W
2$1
+`F(.*)V
5$1
+`N(.*)V
7$1
}`NO
1
NN
9
T`L
O`.

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

-12 বাইট @ নীল ধন্যবাদ

প্রতিস্থাপনে এল অক্ষরের ক্লাস ব্যবহার করে -3 বাইট

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

মূলত, এটি এই সত্যের উপর নির্ভর করে যে অক্ষরগুলি কেবলমাত্র নির্দিষ্ট সংখ্যক নামেই ব্যবহৃত হয়। উদাহরণস্বরূপ SIXএকমাত্র নাম যা একটি থাকে X। এটি কিছু শব্দ অক্ষরগুলিতে ওভারল্যাপ হয়ে যায় যেমন উভয়ই FIVEএবং SEVENব্যবহার করে V। এই চিহ্নিতকরণের দ্বারা সংশোধন করা যেতে পারে FIVEসঙ্গে F(.*)V


1
পুনঃটুইট 8-এ রূপান্তরকরণের পুনরাবৃত্তিটি সঠিকভাবে কাজ করছে না
ফায়ার ফ্লেম 241

1
@RickHitchcock। তাদের সবার জন্য পুনরাবৃত্তি স্থির করে।
ফায়ার ফ্লেম 241

বিরক্তিজনকভাবে GHএবং NOপূর্ববর্তী প্রতিস্থাপন থেকে পূর্ববর্তী 8বা বাদে সংলগ্ন হবে 1...
নীল

সম্ভবত }`GH 8এটির জন্য কাজ করবে 8- }চরিত্রগুলি আবার বাছাইয়ের কারণ হবে, যাতে কোনও অবশিষ্ট Gএবং Hএকসাথে রেখে ।
নীল

@ নীল সুন্দর ধারণা। আমি এটি করতে সক্ষম হয়েছি NO -> 1, যা সুবিধাজনক ছিল।
ফায়ার ফ্লেম 241

5

কোটলিন 1.1 , 359 352 331 327 325 বাইট

নমন

fun r(r:String):String{var s=""
val f=r.split(s).groupingBy{it}.eachCount()
val c=Array(10,{0})
c[8]=f["G"]?:0
c[6]=f["X"]?:0
c[4]=f["U"]?:0
c[2]=f["W"]?:0
c[1]=(f["O"]?:0)-c[2]-c[4]
c[3]=(f["R"]?:0)-c[4]
c[7]=(f["S"]?:0)-c[6]
c[5]=(f["V"]?:0)-c[7]
c[9]=((f["N"]?:0)-c[1]-c[7])/2
for(i in 1..9)for(x in 1..c[i])s+=i
return s}

কোটলিন ১.১ সমর্থিত না হওয়ায় ট্রিআইটঅনলাইনটিতে কাজ করে না

পরীক্ষা

fun r(r:String):String{
val f=r.split("").groupingBy{it}.eachCount()
val c=Array(10,{0})
c[8]=f["G"]?:0
c[6]=f["X"]?:0
c[4]=f["U"]?:0
c[2]=f["W"]?:0
c[1]=(f["O"]?:0)-c[2]-c[4]
c[3]=(f["R"]?:0)-c[4]
c[7]=(f["S"]?:0)-c[6]
c[5]=(f["V"]?:0)-c[7]
c[9]=((f["N"]?:0)-c[1]-c[7])/2
var s=""
for(i in 1..9)for(x in 1..c[i])s+=i
return s}

data class TestData(val input: String, val output: String)

fun main(vararg args:String) {
    val items = listOf(
    TestData("NEO" , "1"),
    TestData("NWEOOT" , "12"),
    TestData("TOEERWNEHOT" , "123"),
    TestData("IHNEVGENNEISTE" , "789"),
    TestData("WEETVTRFSVUHNEEFRHIXEOINSNIEGTOONIEE" , "123456789"),
    TestData("EWHEWROETOTTON" , "1223")
    )
    for (item in items) {
        val out = r(item.input)
        if (out != item.output) {
            throw AssertionError("Bad result: $item : $out")
        }
    }
}

যুক্তিবিদ্যা

ডাবা শীট

আমি উপরের চাদরটি প্রতিটি চিঠি সমাধানের সহজ উপায়টি ব্যবহার করতে ব্যবহার করেছি

  • সবুজ = নিজেই সমাধান করুন
  • নীল = সমাধান করতে সবুজ প্রয়োজন
  • কমলা = সমাধান করার জন্য ব্লুজ প্রয়োজন
  • লাল = সমাধান করার জন্য কমলা দরকার

সম্পাদনাগুলি

  • -7 - ডাব্লু0 এলএফ দ্বারা হোয়াইটস্পেসের পরিবর্তন
  • -21 - অ্যারে থেকে তালিকা সঙ্কুচিত করুন
  • -4 - অপরিবর্তিত বন্ধনীগুলি সরানো হয়েছে
  • 0 - যুক্ত যুক্তি যুক্ত
  • -2 - কেভিন-ক্রুজসেনকে ধন্যবাদ খালি স্ট্রিং পুনরায় ব্যবহার করা

1
ঠিক লক্ষ্য করেছি যে আমি একই সাথে আপনার একই সাথে আমার জাভা 8 উত্তর (127 বাইট) দিয়ে বাঁধা using ;) কিন্তু একটা প্রশ্ন: আপনি পরিবর্তন করতে পারি না var s=""এবং return sকরতে r=""এবং return rইনপুট-স্ট্রিং, যাতে সময়ে যা আপনি আর প্রয়োজন পুনঃব্যবহার করে? আমি এর আগে কোটলিনে কখনও প্রোগ্রাম করি নি, তাই এমন হতে পারে যে আমি এখানে বাজে কথা বলি। ; পি
কেভিন ক্রুইজসেন

1
দুর্ভাগ্যবশত নয়> discuss.kotlinlang.org/t/...
jrtapsell

1
হ্যাঁ হ্যাঁ, এটি অবশ্যই একটি সম্ভাবনা ছিল; finalডিফল্টরূপে পরামিতিগুলি । হুম, অন্য একটি জিনিস আপনি গলফ করতে সক্ষম হতে পারেন: স্থাপন করুন var s=""পদ্ধতিতে প্রথম জিনিস, এবং প্রতিস্থাপন val f=r.split("").সঙ্গে val f=r.split(s).। আবার, এটি কাজ করে না ধারণা। খুব খারাপ টিআইও এখনও v1.1 সমর্থন করে না, অন্যথায় আমি নিজেকে নির্বোধ
শোনার

4

জেলি , 37 বাইট

1ðDị“©ȯ¿w¶&ÇhṆỌƘ#Ȯʋ~¢CNẓ_»ŒuḲ¤ẎŒ!ċð1#

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

-1 জনাথন অ্যালানকে ধন্যবাদ ।


কিছু ইনপুট 7 অক্ষর (: প্রাক্তন চেয়ে বড় আউট এই বার NINEFIVE, THREEFIVE)। এটি কি বাগ, বা কোডটি কেবল অকার্যকর?
ক্রিশ্চিয়ান লুপাস্কু

@ w0lf উত্তরোত্তর ( Œ!যার অর্থ " অনুমান ")
এরিক দ্য আউটগল্ফার

"!" এর পরিবর্তে "এএ" ব্যবহার করে একটি বাইট সংরক্ষণ করুন:...“©ȯ¿w¶&ÇhṆỌƘ#Ȯʋ~¢CNẓ_»...
জোনাথন অ্যালান

@ জোনাথন অ্যালান ওহ এএ শব্দ কি?
এরিক দি আউটগল্ফার

হ্যাঁ, এটি সংক্ষিপ্ত অভিধানের প্রথম শব্দ।
জোনাথন অ্যালান

3

জাভা 8, 248 234 বাইট

s->{int x=0,a[]=new int[10];for(String t:"2WO;4UORF;6XSI;8GI;5FI;7S;3R;1O;9I".split(";"))for(;s.indexOf(t.charAt(1))>=0;a[t.charAt(0)-48]++)for(String z:t.split(""))s=s.replaceFirst(z,"");for(s="";x++<9;)for(;a[x]-->0;)s+=x;return s;}

কোড ব্যাখ্যা:

s->{
    // Array to count how often which number appears
    int a[]=new int[10];
    // The first character behind the number serves the identification
    // the other characters get removed to identify the other numbers later
    for(String t:"2WO;4UORF;6XSI;8GI;5FI;7S;3R;1O;9I".split(";"))
        // Check if the string contains the id 
        for(;s.indexOf(t.charAt(1))>=0;a[t.charAt(0)-48]++)
            // Remove the relevant charcters
            for(String z:t.split(""))
                s=s.replaceFirst(z,"");
    // Clear the string to write the output
    s="";
    // write the numbers sequential into the output 
    for(int x=0;x++<9;)
        for(;a[x]-->0;)
            s+=x;
    return s;
}

-14 অলিভিয়ার গ্রাগোয়ারকে ধন্যবাদ



2

জাভা 8, 346 345 344 336 327 বাইট

s->{int g=c(s+=" ","G"),u=c(s,"U"),w=c(s,"W"),x=c(s,"X"),f=c(s,"F")-u,h=c(s,"H")-g,v=c(s,"V")-f,o=c(s,"O")-u-w,i=c(s,"I")-f-x-g;return d(s=d(s=d(s=d(s=d(s=d(s=d(s=d(s=d("",o,1),w,2),h,3),u,4),f,5),x,6),v,7),g,8),n,9);}int c(String...s){return~-s[0].split(s[1]).length;}String d(String s,int i,int n){for(;i-->0;s+=n);return s;}

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

সাধারণ ব্যাখ্যা:

আমি বর্ণমালার প্রতিটি চরিত্রের ঘটনাগুলি দেখেছি:

E 13357789
F 45
G 8
H 38
I 5689
N 1799
O 124
R 34
S 67
T 238
U 4
V 57
W 2
X 6
  • আমি প্রথম একক ম্যাচ অক্ষরের সব ঘটনার গণনা: G=8; U=4; W=2; X=6
  • তারপর দুই মিলেছে অক্ষর, যা চার এক উপরে মেলে, যা আমি তাদের গন্য থেকে বিয়োগ করতে পারেন সব ঘটনার: F=5; H=3
  • তারপরে আমি আবার V=7এটির জন্য (বিয়োগ করে F=5)।
  • তাহলে সব তিন ম্যাচ অক্ষর আছে যা বাকি ছিল একই: O=1; N=9
    • তবে Nদুটি ঘটনার কারণে NINE, আমার -1প্রতিটি ঘটনার জন্য আমাকে একটি অতিরিক্ত কাজ করতে হয়েছিল N, সুতরাং আমি এর I=9পরিবর্তে ব্যবহার করেছি (দুটি পরিবর্তে পূর্ববর্তী তিনটি ম্যাচ বিয়োগ করে)।

কোড ব্যাখ্যা:

s->{                    // Method with String as parameter and return-type
  int g=c(s+=" ","G"),  //  Amount of 8s (and append a space to `s` first, for the .split)
      u=c(s,"U"),       //  Amount of 4s
      w=c(s,"W"),       //  Amount of 2s
      x=c(s,"X"),       //  Amount of 6s
      f=c(s,"F")-u,     //  Amount of 5s
      h=c(s,"H")-g,     //  Amount of 3s
      v=c(s,"V")-f,     //  Amount of 7s
      o=c(s,"O")-u-w,   //  Amount of 1s
      i=c(s,"I")-f-x-g; //  Amount of 9s
  return d(             //  Return the result by:
   s=d(
    s=d(
     s=d(
      s=d(
       s=d(
        s=d(
         s=d(
          s=d("",       //   Making the input String `s` empty, since we no longer need it
                 o,1),  //   Append all 1s to `s`
         w,2),          //   Append all 2s to `s`
        h,3),           //   Append all 3s to `s`
       u,4),            //   Append all 4s to `s`
      f,5),             //   Append all 5s to `s`
     x,6),              //   Append all 6s to `s`
    v,7),               //   Append all 7s to `s`
   g,8),                //   Append all 8s to `s`
  i,9);                 //   And then returning `s` + all 9s
}                       // End of method

int c(String...s){  // Separate method with String-varargs parameter and int return-type
                    //  `s[0]` is the input-String
                    //  `s[1]` is the character to check
  return~-s[0].split(s[1]).length;
                    //  Return the amount of times the character occurs in the String
}                   // End of separated method (1)

String d(String s,int i,int n){
               // Separate method with String and two int parameters and String return-type
  for(;i-->0;  //  Loop from the first integer-input down to 0
      s+=n     //   And append the input-String with the second input-integer
  );           //  End of loop
  return s;    //  Return the resulting String
}              // End of separated method (2)

1
জঘন্য, আমি ভেবেছিলাম যে একটি তালিকাতে যুক্ত করা হলে এটি বাছাই করা আরও কম হবে (এটি নয়)। সাবাশ!
অলিভিয়ার

1
ঠিক আছে, শেষ পর্যন্ত, আমি আপনাকে ছাড়িয়েছি , তবে খুব বেশি কিছু নয়;)
অলিভিয়ার


1

পাইথন 3 , 225 বাইট

def f(s):
	r=[]
	for i,w in zip([2,4,6,8,3,5,7,1,9],["WTO","UFOR","XSI","GEIHT","HTREE","FIVE","VSEEN","ONE","NINE"]):
		while s.count(w[0]):
			r+=[i]
			for l in w:s="".join(s.split(l,1))
	return "".join(sorted(map(str,r)))

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

সোজা: আগে নির্দিষ্ট অক্ষর দ্বারা চিহ্নিত চিহ্নিত অঙ্কগুলি সরিয়ে ফেলুন।


1

পাইথন 3 , 125 বাইট

lambda s:''.join(min(w)*(2*sum(map(s.count,w[:2]))-sum(map(s.count,w)))for w in"O1WU W2 H3G U4 F5U X6 S7X G8 IUFXG9".split())

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

সংযুক্ত চ্যালেঞ্জটি পড়ার পরে আমি বুঝতে পেরেছিলাম যে এটি মিডাহমনের পাইথন সমাধানের একটি প্রকরণ , যা নিজেই এর উপর ভিত্তি করে ড্রাকো 18 এর ইএস 6 সমাধানের , তবে ওহে, কমপক্ষে আমরা দুটি বাইট বন্ধ করেছিলাম।

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



1

অ্যাক্সিয়োম, 351 বাইট

s:="GXUWRFVIONETHS";e:EqTable(CHAR,INT):=table();v:=[8,6,4,2,3,5,7,9,1];z:=[k for k in 1..46|prime?(k)];F(x,y)==>for i in 1..#x repeat y;F(z,e.(s.i):=z.i);t:=[1787026,2451,16445,5957,16036207,130169,20372239,495349,20677];h(a)==(r:=1;F(a,r:=r*e.(a.i));j:=[];F(v,while r rem z.i=0 repeat(r:=r quo t.i;j:=cons(v.i,j)));j:=sort j;k:=0;F(j,k:=k*10+j.i);k)

নিরবচ্ছিন্ন মন্তব্য ফলাফল

s:="GXUWRFVIONETHS" -- tutte le lettere di ONE..NINE in ordine di importanza 
e:EqTable(Character,Integer):=table()
v:=[8,6,4,2,3,5,7,9,1]              -- numeri da controllare in quell'ordine di apparizione di v
z:=[k for k in 1..46|prime?(k)]     -- 14 numeri primi da associare a s
F(x,y)==>for i in 1..#x repeat y 
F(z,e.(s.i):=z.i)                   -- riempie la tavola associando numeri primi alle lettere "GXUW..."
t:=[1787026,2451,16445,5957,16036207,130169,20372239,495349,20677]  -- prodotto di numeri primi 1787026 dovrebbe essere HEIGHT
h(a)==
     r:=1 ;F(a,r:=r*e.(a.i))        -- calcola il numero associato alla stringa a
     j:=[];F(v,while r rem z.i=0 repeat(r:=r quo t.i;j:=cons(v.i,j)));j:=sort j  -- leva il nome dei numeri che man mano trova, aggiunge a j
     k:=0 ;F(j,k:=k*10+j.i)         -- costruisce il numero decimale k, da j vettore ordinato
     k                              -- ritorna tale numero k
------------------------------------------------------
(8) -> h("IHNEVGENNEISTE")
   (8)  789
                                                    Type: PositiveInteger
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.