पाठ संपीड़न


18

नीचे दिए गए पाठ के साथ, पाठ में कुछ शब्द हैं जो पाठ में कई बार दोहराते हैं। एक संक्षिप्त कोड लिखने के लिए किसी भी प्रोग्रामिंग भाषा का उपयोग करें जो इसे प्रदर्शित करने के लिए पाठ को संकुचित करता है। या दूसरे शब्दों में, पाठ प्रदर्शित करने के लिए सबसे कम संख्या में बाइट्स का उपयोग करें।
पाठ इस प्रकार है:

Peter Piper picked a peck of pickled peppers.
A peck of pickled peppers Peter Piper picked.
If Peter Piper picked a peck of pickled peppers,
Where's the peck of pickled peppers Peter Piper picked?

6
मैं ईमानदारी से आश्चर्यचकित हूं कि यह रिक-रोल प्रश्न के एक ठिकाने के रूप में बंद नहीं हुआ। क्या अब हम ऐसा नहीं कर रहे हैं?
जो किंग

1
यह @JoKing है एक अलग स्ट्रिंग। एक ही चुनौती पर थोड़ी विविधता कभी-कभी मज़ेदार हो सकती है।
चन्द्रावत ०

@ Moonheart08 को यकीन है कि बिंदु को मेटा में गोली मार दी गई थी।
मैजिक ऑक्टोपस Urn

जवाबों:


9

आर , 106 बाइट्स

"["=gsub
cat(1["Peter Piper picked",2[" peck of pickled peppers","1 a2.
A2 1.
If 1 a2,
Where's the2 1?"]])

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


1
यह अलियासिंग का एक बहुत ही चतुर उपयोग है !!
ग्यूसेप

1
महान समाधान! यह 8Com पर मेमॉन्सर एप्रोच 47 + 79 = 126 बाइट्स
डिस्टेक्टेल

1
इस विचार ने मुझे यहां एक और बाइट भी बचा लिया !
ग्यूसेप

वाह, मैंने उस गोल्फ को नहीं देखा। यह वाकई बहुत अच्छा है।
१५:१५ पर जे। डे

8

जेली ,  80 73 72 68 67 61  57 बाइट्स

“¡ŀṪ]ṃ{yṁ“Ñ3$ṘW5Ḍż⁸¢Hŀ“³ḌM“¡FỊİg“ÑɲʋØƥþƈƘ}“ṣɠ»“Ƙ9~ḷ’ṃFḊ”?

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

कैसे?

“...“...“...“...“...“...»“Ƙ9~ḷ’ṃFḊ”? - Main Link: no arguments
“...“...“...“...“...“...»            - list of compressed strings
                                     -   = [" Peter Piper picked",
                                     -      " peck of pickled peppers",
                                     -      ".\nA",
                                     -      ".\nIf",
                                     -      ",\nWhere's the",
                                     -      " a"]
                         “Ƙ9~ḷ’      - base 250 literal X = 2331781969
                               ṃ     - base decompress - i.e. use the list of strings as if
                                     -   they were the digits [1,2,3,4,5,0]
                                     -   X in base 6 is [1,0,2,3,2,1,4,1,0,2,5,2,1], so:
                                     -   [" Peter Piper picked",
                                     -    " a",
                                     -    " peck of pickled peppers",
                                     -    ".\nA"," peck of pickled peppers",
                                     -    " Peter Piper picked",
                                     -    ".\nIf",
                                     -    " Peter Piper picked",
                                     -    " a",
                                     -    " peck of pickled peppers",
                                     -    ",\nWhere's the",
                                     -    " peck of pickled peppers",
                                     -    " Peter Piper picked"]
                                F    - flatten
                                 Ḋ   - dequeue (remove the leading space)
                                  ”? - literal '?' character (causes print of previous)
                                     - implicit print (of the '?' character)

5

बबलगम , 73 71 बाइट्स

00000000: 0b48 2d49 2d52 08c8 2c00 9205 99c9 d9a9  .H-I-R..,.......
00000010: 290a 890a 05a9 c9d9 0af9 6960 819c d414  ).........i`....
00000020: 20bf 0028 5fac c7e5 884b 4a01 d31c 3d2e   ..(_....KJ...=.
00000030: cf34 0552 8cd7 e10a cf48 2d4a 552f 5628  .4.R.....H-JU/V(
00000040: c948 25c1 227b 00                        .H%."{.

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


2
आपने बबलगम जवाब के बाइट्स को कैसे दाढ़ी?
लैकोनी

2
@ लिकोनी का मूल 73 बाइट्स उत्तर gzipउच्चतम संपीड़न स्तर ( -9) के साथ-साथ कुछ मेटाडेटा शेविंग का उपयोग करके बनाया गया था headऔर tail, 71 बटर ज़ोफ़ली का उपयोग करके उत्पन्न होता है, जिसके बारे में मैं शुरू में भूल गया था। ज़ोपफली आमतौर पर छोटी छोटी धाराएँ बनाता है।
२१

हाँ, मैंने zopfli पर 5,000,000 पुनरावृत्तियों की कोशिश की है, यह पुनरावृत्ति 3109 पर 71-बाइट अतीत में से कुछ भी नहीं पा सका।
LegionMammal978

5

जावास्क्रिप्ट (स्पाइडरमोनी) , 114 बाइट्स

print(`0 a1.
A1 0.
If 0 a1,
Where's the1 0?`.replace(/\d/g,n=>+n?' peck of pickled peppers':'Peter Piper picked'))

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

मैं यह दावा करूंगा कि यह उत्तर अंडा से है , वैसे भी, 19 बाइट्स बचाए गए हैं।

धन्यवाद Arnauld , 3 बाइट्स बचाता है।



4

पायथन 2 , 115 बाइट्स

a="Peter Piper picked"
b=" peck of pickled peppers"
print a,"a%s.\nA"%b+b,a+".\nIf",a,"a%s,\nWhere's the"%b+b,a+"?"

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

उनके बीच रिक्त स्थान डालने के लिए कई अल्पविराम से अलग तार प्रिंट करता है।


पायथन 3 , 115 बाइट्स

print("1 a2.\nA2 1.\nIf 1 a2,\nWhere's the2 1?".translate({49:"Peter Piper picked",50:" peck of pickled peppers"}))

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

पायथन 3 translateभारी लिफ्टिंग करता है। एकल-अंक ASCII मान के साथ गैर-मुद्रण योग्य वर्णों का उपयोग करके दो बाइट्स को सहेजना चाहिए।


1
exitपायथन 3 प्रोग्राम के लिए 1 बाइट बचाता है।
जोनाथन एलन

4

जेली , ६४ ६० 58 57 बाइट्स

“¡ŀṪ]ṃ{yṁ“Ñ3$ṘW5Ḍż⁸¢Hŀ»j⁾ a,Ṛẋ2ż“³ḌM“¡FỊİg“ÑɲʋØƥþƈƘ}»FḊ”?

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


वाह, आश्चर्यजनक रूप से एक और उत्तर के समान, एक ही भाषा और एक ही बाइट गिनती के साथ। मैं वास्तव में नहीं जानता कि इस भाषा में क्या हो रहा है, इसलिए कोड मूल रूप से समान है?
विषयांतर

1
कोड में बहुत सारे ओवरलैप समान संकुचित तार हैं, जो आश्चर्य की बात नहीं है।
मिशा लावरोव

1
@tox दोनों कार्यक्रम वर्तमान में एक ही तरह से काम नहीं कर रहे हैं (हालांकि हम दोनों ने एक दूसरे के विचारों को पुनर्जीवित करने के लिए समान विचारों का उपयोग किया है)। यह “...“...»चार पंक्तियों में से अधिकांश बनाने के लिए संपीड़ित स्ट्रिंग सूचियों ( ) का उपयोग कर रहा है और फिर żकम दोहराव वाले भागों (जैसे ',\nIf') के साथ इंटरलेविंग ( ) फिर से संकुचित स्ट्रिंग सूचियों के साथ; आप देख सकते हैं कि विवरण से मेरा काम कैसे चलता है।
जोनाथन एलन

3

बैश , 99

  • 4 बाइट्स @manatwork की बदौलत बच गईं।
echo "${P=Peter Piper picked} a${p= peck of pickled peppers}.
A$p $P.
If $P a$p,
Where's the$p $P?"

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


3
आप डिफ़ॉल्ट मूल्य पैरामीटर विस्तार असाइन करने के साथ चर घोषणाओं को उनके पहले चरण में ले जा सकते हैं: इसे ऑनलाइन आज़माएं!
मैनटवर्क

1
@manatwork वाह, मुझे नहीं पता था कि तुम ऐसा कर सकते हो। 100 के तहत पाने के लिए बहुत अच्छा - धन्यवाद! यह तकनीक एक अच्छे बैश टिप्स का जवाब देगी ।
डिजिटल ट्रॉमा

2

वी , 99 87 बाइट्स

-12 बाइट्स: मुड़ता है 2 प्रतिस्थापन छोटे होते हैं जो मूल रूप से सभी के समाधान (बबलगम को छोड़कर) के समान होते हैं?

i1 a0.
A0 1.
If 1 a0,
Where's the0 1?Í0/ peck of pickled peppers
Í1/Peter Piper picked

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


2

पायथन 3 , 120 117 116 बाइट्स

a,b="Peter Piper picked"," peck of pickled peppers"
exit(f"{a} a{b}.\nA{b} {a}.\nIf {a} a{b},\nWhere's the{b} {a}?")

प्रारूप स्ट्रिंग अतिरिक्त (129 बाइट्स) और जॉइन (140 बाइट्स) से कम थे ।

-3 जो किंग के लिए धन्यवाद, -1 जोनाथन एलन के लिए धन्यवाद


1
यह एक प्रारूप स्ट्रिंग नहीं है। यह एक प्रारूप स्ट्रिंग है। (117 बाइट्स)
जो किंग

1
कार्यक्रम STDERR मई उत्पादन , इसलिए बदल कर 1 को बचाने printके साथ exit
जोनाथन एलन

2

जावा (JDK) , 123 बाइट्स

v->"".format("%s a%s.%nA%2$s %1$s.%nIf %1$s a%2$s,%nWhere's the%2$s %1$s?","Peter Piper picked"," peck of pickled peppers")

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


क्या आपको इस तरह एक आवश्यक तर्क लेने की अनुमति है?
क्विंटेक

2
@ क्विंट जी हां , अगर इनपुट अप्रयुक्त है
जो किंग

2

टहनी, 105 बाइट्स

यह अंतराल में भरने के लिए एक सरल प्रतिस्थापन का उपयोग करता है।

ट्विग का replace()फ़िल्टर आपको हैश की कुंजी के रूप में प्रतिस्थापित करने के लिए मूल्यों को परिभाषित करने की अनुमति देता है। सौभाग्य से, यह सरणियों के साथ भी काम करता है, क्योंकि उनके पास संख्यात्मक चाबियाँ हैं।

{{"0a1.
A1 0.
If 0 a1,
Where's the1 0?"|replace(["Peter Piper picked"," peck of pickled peppers"])|raw}}

|rawबचने, कर दिया जो से बचने के लिए की जरूरत है Where'sमें Where's

आप इसे https://twigfiddle.com/phqpts पर आज़मा सकते हैं


चूंकि यह PHP के लिए संकलित है, PHP के लिए समकक्ष होगा:

<?php
    $array = array("Peter Piper picked", " peck of pickled peppers");
    $string = "0 a1.
A1 0.
If 0 a1,
Where's the1 0?";

    echo str_replace(array_keys($array), $array, $string);

जिसे महत्वपूर्ण रूप से छोटा किया जा सकता है।







1

jq, 110 वर्ण

(106 वर्ण कोड + 4 वर्ण कमांड लाइन विकल्प)

"1 a2.
A2 1.
If 1 a2,
Where's the2 1?"|gsub("1";"Peter Piper picked")|gsub("2";" peck of pickled peppers")

नमूना रन:

bash-4.4$ jq -nr '"1 a2.
A2 1.
If 1 a2,
Where'"'"'s the2 1?"|gsub("1";"Peter Piper picked")|gsub("2";" peck of pickled peppers")'
Peter Piper picked a peck of pickled peppers.
A peck of pickled peppers Peter Piper picked.
If Peter Piper picked a peck of pickled peppers,
Where's the peck of pickled peppers Peter Piper picked?

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


1

SQL सर्वर, 211

declare @a char(18)='Peter Piper picked'
declare @b char(24)=' peck of pickled peppers'
declare @c char=char(10)
print @a+' a'+@b+'.'+@c+'A'+@b+' '+@a+'.'+@c+'If '+@a+' a'+@b+','+@c+'Where''s the'+@b+' '+@a+'?'

डाटाबेस <> बेला


अच्छा समाधान! सुधारने के कुछ तरीके: कई चर के लिए आराम करने के बजाय अल्पविराम का उपयोग करें declare; इसके बजाय स्ट्रिंग में एक वास्तविक लाइन ब्रेक का उपयोग करें char(10), वास्तव में आप लाइन ब्रेक को सीधे printस्टेटमेंट में डाल सकते हैं और @cपूरी तरह से समाप्त कर सकते हैं। अपने सबसे अधिक उपयोग @किए जाने वाले चर को चुनें और स्वयं (इसके वैध!) द्वारा उपयोग करें
ब्रैड

1

स्टैक्स , 60 56 बाइट्स

╣lF╤╨┴+Y╟W╪▄,○F«↑•L°T»`┼◄ü√}x![Ñ$Θ☼²qσQ¼▬ôZ¡▄╙╥⌂å╛►¶▓&╗s

इसे चलाएं और डीबग करें


1
यहाँ एक बाइट कम अनपैक्ड है, और यह एक अस्तित्व के बारे में गहरा बयान करता है।
खुल्द्रेसथ ना'बरिया

"i am. Am i. If i am, Where's them i?" मैं हँसना बंद नहीं कर सकता। यह सोना है।
पुनरावर्ती

डेसकार्टेस मुझ पर 'कुछ नहीं' नहीं है।
खुल्द्रेसथ ना'बरिया

1

टी-एसक्यूएल, 137 बाइट्स

SELECT p+a+k+'.
A'+k+' '+p+'.
If '+p+a+k+',
Where''s the'+k+' '+p+'?'
FROM(SELECT'Peter Piper picked'p,' a'a,' peck of pickled peppers'k)b

इससे पहले कि अंतिम वापसी FROMकेवल पठनीयता के लिए हो, बाकी सभी स्ट्रिंग कॉन्फैक्शन का हिस्सा हैं।

SeanC के SQL समाधान की तुलना में अलग विधि ।




0

लाल , 116 बाइट्स

prin rejoin[a:"Peter Piper picked"" a"b:" peck of pickled peppers"".^/A"b" "a".^/If "a" a"b",^/Where's the"b" "a"?"]

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

स्पष्टीकरण:

काम rejoinफफूंद द्वारा किया जाता है , जो मूल्यों के एक ब्लॉक को कम और जोड़ देता है।

prin rejoin [                      ; print the reduced (evaluated) and joined block
    a: "Peter Piper picked"        ; save the text to a
    " a"                           ; literal " a"
    b: " peck of pickled peppers"  ; save the text to b
    ".^/A"                         ; literal newline followed by "A"
    b                              ; " peck of pickled peppers" 
    " "                            ; literal " "
    a                              ; "Peter Piper picked"
    ".^/If "                       ; literal ".^/If "
    a                              ; "Peter Piper picked"
    " a"                           ; literal " a"
    b                              ; " peck of pickled peppers" 
    ",^/Where's the"               ; literal "," folowwed by a newline by "Where's the"  
    b                              ; " peck of pickled peppers"      
    " "                            ; literal " "
    a                              ; "Peter Piper picked" 
    "?"                            ; literal "?"
]


0

PHP , 107 बाइट्स

<?=($a="Peter Piper picked")." a".($b=" peck of pickled peppers").".
A$b $a.
If $a a$b,
Where's the$b $a?";

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


पहली पंक्ति में एक बिंदु गुम।
GB

4 बाइट्स को बचाने के लिए संघनन के बजाय अल्पविराम का उपयोग करें:<?=$a=...," a",$b=...,...
टाइटस

0

05AB1E , 78 76 74 72 बाइट्स

’0 a1.
A10.
If0 a1,
W€Î's €€10?’TS.•1~¼ ¿•“±æ€‚ ÿÇì“'p0ǝ„íδŒ™„r¾Ð«‚ðì:¦

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

स्पष्टीकरण:

’0 a1.
A10.
If0 a1,
W€Î's €€10?’              # String "0 a1.\nA10.\nIf0 a1,\nWhere's the10?"
TS                        # 10 to digits: ["1","0"]
.•1~¼ ¿•                  # String "pickled"
        “±æ€‚ ÿÇì“        # String "neck of ÿ pepper", where the "ÿ" will 
                          # automatically be replaced with the top value of the stack
                  'p0ǝ    # Replace the character at index 0 with a "p":
                          #  "peck of pickled pepper"
„íδŒ                     # String "peter pipe"
     ™                    # Titlecased: "Peter Pipe"
      „r¾Ð                # String "r picked"
          «               # Merge them together: "Peter Piper pickled"
           ‚              # Pair them together:
                          #  ["peck of pickled pepper","Peter Piper pickled"]

            ðì            # Prepend a space before each:
                          #  [" peck of pickled pepper"," Peter Piper pickled"]
              :           # Replace the ["1","0"] with this list of strings
               ¦          # Remove the leading space (and output implicitly)

क्यों समझने के लिए मेरा यह 05AB1E टिप देखें :

  • ’0 a1.\nA10.\nIf0 a1,\nW€Î's €€10?’ है "0 a1.\nA10.\nIf0 a1,\nWhere's the10?"
  • .•1~¼ ¿• है "pickled"
  • “±æ€‚ ÿÇì“ है "neck of ÿ pepper"
  • „íδŒ है "peter pipe"
  • „r¾Ð है "r picked"



0

PHP , 102 बाइट्स

मूल रूप से बस संख्याओं के साथ पुनरावर्तक शब्द या वाक्य बदलते हैं, और फिर php-strtr लागू होते हैं

<?=strtr("0 a 1.
A 1 0.
If 0 a 1,
Where's the 1 0?",["Peter Piper picked","peck of pickled peppers"]);

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

या

PHP , 144 बाइट्स

<?=strtr("0 1 25 a 3 of 2l5 4.
A 3 of 2l5 4 0 1 25.
If 0 1 25 a 3 of 2l5 4,
Where's the 3 of 2l5 4 0 1 25?",[Peter,Piper,pick,peck,peppers,ed]);

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


0

पॉवरशेल, 99 101 बाइट्स

$a='Peter Piper picked'
$b=' peck of pickled peppers'
"$a a$b.
A$b $a.
If $a a$b,
Where's the$b $a`?"

1
$ A = 'पीटर पाइपर उठाया' नहीं होना चाहिए?
wooshinyobject

1
ऐसा प्रतीत होता है जैसे कि स्थान the $bआपके सबमिशन को लंबा और अमान्य ( TIO ) बनाता है ।
जोनाथन फ्रीच

1
इसके अलावा, मुझे लगता है कि आप एक याद कर रहे हैं [...]Peter Piper picked? अपने आउटपुट के अंत में ।
जोनाथन फ्रीच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.