Post History
Python 3, 319 318 bytes print('riBfig,barBbilBdewBmulBtayBabiu,bael,date,lime,lulo,neem,noni,pear,pili,plum,rimu,sloe,sorb,yuzu,bearBblueBcranBcrowBemu BhackBjuneBlimeBpineBraspBwineBwolfByew Back...
Answer
#4: Post edited
- # [Python 3], ~~319~~ 318 bytes
- ```python
- print('riBfig,barBbilBdewBmulBtayBabiu,bael,date,lime,lulo,neem,noni,pear,pili,plum,rimu,sloe,sorb,yuzu,bearBblueBcranBcrowBemu BhackBjuneBlimeBpineBraspBwineBwolfByew Backee,akebi,apple,araza,cacao,caqui,carob,etrog,gấc,grape,guava,ilama,jagua,kokum,kubal,lemon,mango,melon,mundu,musho,nance'.replace('B','berry,'))
- ```
- [Try it online!][TIO-lmzg5d4n]
- ---
- *1 byte saved thanks to [msb's comment](https://codegolf.codidact.com/comments/thread/8512#comment-21966) which made me realise I was sorting the fruit by string length (which measures characters instead of bytes, making fruits with diacritics seem shorter than they really are).*
- ---
This works by representing `berry,` (including the comma) as `B`. This means every fruit that ends in "berry" can effectively save 5 bytes. It turns out there are enough berries to make the 22 byte cost of `replace` worthwhile.This is the 55 shortest fruits measuring length after substituting "berry," with "B". I generated the code using this code: [Try it online!][TIO-lmzftgr9]- ## My initial failed attempts
- Before I found this approach I tried shortening the other two Python 3 answers, but in both cases my misguided efforts only made the code longer...
- ### Trying to shorten [steffan153's answer](https://codegolf.codidact.com/posts/287088/287094#answer-287094)
- I noticed that some of the fruits had diacritics, which makes them longer in bytes than they appear, so instead of just using the 55 shortest fruit by characters, I used the 55 shortest fruit after throwing away any fruit with diacritics, like gấc and açaí. However, since we've already used up all of the fruit of length 5 bytes or less, each diacritic fruit removed brings in another 6 byte fruit, so the total length of the code went up by a byte:
- ```python
- print('fig abiu bael date lime lulo neem noni pear pili plum rimu sloe sorb yuzu ackee akebi apple araza cacao caqui carob etrog grape guava ilama jagua kokum kubal lemon mango melon mundu musho nance ooray peach pequi pluot prune pudau rowan rukam salak salal tapia terap tilap toyon wongi almond babaco bacuri banana bignay')
- ```
- [Try it online!][TIO-l8r3k4fp]
- ### Trying to shorten [Moshi's answer](https://codegolf.codidact.com/posts/287088/287095#answer-287095)
- I thought I could save some bytes by using fewer distinct characters in the list of fruits, since all of these need to be listed in the `while` loop that extracts the data. So I repeatedly found the letter present in fewest fruits, and discarded all fruits containing that letter, stopping short of ending up with fewer than 55 fruits remaining. This left me with only 14 distinct characters, down from 16 in the original code. However, the 2 bytes this saved were overwhelmed by the fact that the new list of 55 fruits contained longer fruits, since I'd discarded some of the shorter ones, leaving the code 14 bytes longer:
- ```python
- from base64 import*
- n=int.from_bytes(b85decode('5YBr@2zdh)fdaH`|L?o31mzCMMOw^}6Gp}*cGPdkWp!!fj9sk(ll2zIiI9x(m!Z#)4FT|UW1Q!@&rHc#p7PfklqbhsG`5TO^jF^L@qmX-@zKRADY>W*()(`#6^w=;IP9xHTgMq6GED;7>E#S9WNiB|2eKZ!HJ!qD(`e}qPwt+~b^KgJISyhSv!lv?ba68XFLI3{>}kf^>gaG928Ym{URfadB71USJH9{@PJ;Ya'),'big')
- while n:print(end="ambling poetry"[n%14]);n//=14
- ```
- [Try it online!][TIO-l8r46k1t]
- ---
- In hindsight I have no idea why I thought either of my initial approaches would work.
- [Python 3]: https://docs.python.org/3/
- [TIO-l8r3k4fp]: https://tio.run/##HZBBdsMwCESvMru0655oJFNHFRKqLJrnXN4h3XyG1R8Y57pb/7quMUtfH7fvsoOpOBJFsXEJtLSAq6GLNHTrBUM4MYpGUm@YpTkONcFhM@H0p4O5ioBVUgHH0MiTTyIz04K/XoLTEmRN27FPDsHu/COKshE/jA3VahiqJypUmnU09t3QRN/Z@@bB4x712LPAbPJ8F8z34NsSFW1hTO@C4Rsd0x7smF7ZcFBZ/6lYHIVYElWwokTQzrA8rO9xhYZ9i88kZouRfZYYoSVS2TvP2@d1vQA "Python 3 – Try It Online"
- [TIO-l8r46k1t]: https://tio.run/##FdDZUoJQAADQd79CZEqwxQERJQYkU1nUJNFRbCJALouyw7ig9utUz@ftxOfcjcJWWdppFFRNIwMkUfWCOErzRiVkvDB//pdv85yDDDG7bQtsIwsg9bbaTzm8sFzUtgxBv056UQsLirfpdHbUbiQf3xpbXrb2qxiC7B2V7RHfxwvRE6kTEkAbGCVGi@tyhX1A3H0qbOG4I9t7PzHdjNfbi5m2G2kTLgnWT1wxnr8OVHbVQFBEh0ntyNCiTJ2EhTNNSH44oDvsEFao1bvXv@JgvIEECUoGiA5uiXzMH35MbexIonJ2lQPkH3qmQXbXo4nYurC3va2xjsFTeFcNLsu5bVj9DrZUJIG6cLJEq0YdfaybnlNHK0fX80E1fInTvxMEhBZTMwLT90KnGkcgT8@1z/AOI75QOmw2GYwoy18 "Python 3 – Try It Online"
- [TIO-lmzftgr9]: https://tio.run/##hVpNjuS4sd7rFEJtqhvuHMAwBngYoDe@xnjQoCSmxBRFaviT2SrDR5iNT2DDePBqFg@zm23BeOfwScZfBH8kVTdgVEGMCElkMBiM@ILKdQuTNX/47TfRfmyfnp5Ep2IjXv8pXn9uRC@d1QLtRP9oZykbcR0nYdp@ks5t4JzqwXbCdqJrry6qUIXpmdY6YUa5S6MPwg0Xsa56l2pL8raTwlTZgvfsmfNByv0Bq3S7Cr28GXeV0LcRYxRe/RhVI2bZ4aqFn0nVaPqpS9prLcdJmq1ddVzALtYMubloKe5yoM5cIzC4CD4S8WJNOzqxQvelE05qMtEisx2kiGHLvVehhulaqQfp3txZxJbNUCRvp1Tkq3ReLVDsIGKdC@eg69eGILkTfs1iM0YtXOuluFzVCN5Yo3gKSQ@6tvnZFT3YUNo8XmLO1nFwG1pZe72Sh2T2ofTQFps6EVQfl0svxtd/2MQbCNrBYr5OkOSFrj2eOyrsFmlUMWKWebG0o9RxjC4xMxhaYq/S8kMc5GI3dBjghAFLdugSjuaEVl@47d32YrANJKKnpo9OoZEaF6VpuaTGAnTiZqMTba@CY1aL8Pp3arW1JhuvI@cwo6D7Bn@5qV0wswrvlTVp@CzbYt/T03kdO/LlZPpEku6P4z0fRyxoWj5I3LOvj9c@tK4PLLwZOwndNPaiw@bE2NKNYsEa573aqdEIvKh07iETbS/6EH02GKRqgdk7ZW6CGtdP8ItrWgGwQwkToFVHNlIhSFdH4X2RFWO6PJ6YohxzSyy6MJumyOS@son3YrUh93iQ791ZO7TQXGayahNli5jhaNGJPq8OSfxDygAbaHiIn5IMvjXG9HYezM4TnDlraLW6k6ctNpogFG2S3poY6M4DY2Gp7dJZchCLWKWpdfb2@gvazUuT@8TmQGAo5mGOeoW6d7zhpBiymkRy9w73X/8JfyzbuHPRT7WLOAyTgKsglg/grleh7QW5wME54dyT1dQOclY50IBbpJc59HXUVxd5NfPIkNwRgFq2RCTz4LY9xW14j7BN9iF2kh4mUYFksGksfRFHYUPRK1pdoZUSxwjQU@SGO@Y@9B27EVEnuVKPgOBf/2YmorrYK2pjSxdQRgzqnAWqzEt3V73cpRgh7VcwClPQRARYKq40zAprWOvrC5RreqS2119MnYizHa5@ko@2aIc4rpwVRHmRo0MvQtByywvaC/iMSz7ai4eEMXs5QNKJraxgL5cVshmECdLAQLq9C6fkiNA3tHNcfowCGuBhQTGWLSU3TdnroPREGQGxgKhVC0VDwX1VP0XMvKHBFAfSMmzK6VILKUYTfRFoER3ZJ6f8a4u42zplyV/MIMsNdqV@Uv2MuP3YWVsMNilEkOLY4Az5HBx@6WpeqtKDPxcZeUExdBYNsEdlrto@MCMzvnmIzMOh6@BG5VbWkRkssen3e2ePKUJkh7d6PSYVZF6ECREAKUO2d9yr87az3F8Ck/tMOSY1xRm1RE5E@oQecMUhP6ntfe9BI8fR1kSK761wZAY7ABxc0jqVUa0AFtNvpmH7eSvmgartIDGwa0rgojbZhNN9ecnsg1szFxiCR4Fc2LLe2EcROiM5ftU3nH2xR9zTI2KINiGY7AsUQN12yYACrEOSVHC5w5LD1/IQoGSxl5MyJwwiV1r9PWdAZPwEXywPVy3jQIkB7RqBiBE7cgKhdiu@GF3soFzCtEWNyPjo5EwxsETekWmhxAnP9FuPeKeqOQaxeKiCDX8XL0lx0A9lEK8rMGC3psslP3BXw7PP2Jc59FGwwCAe255eB@QICsu4e4UxgCwh0qpXFmF5t8wAx3WhILjC5WySWXKwTHK0ynTWIjGIQ2ZAlgSfTTvYsepiY3dc@ME@AMdPDollGG2JqInJdBzxj4ZyHRo/54wwxNBPaYLw90EYMgGy7bW9AQptp/FYTCD5sCBZGD3jyWIAFm4iiFMHUtBOM4e1LhKAe/hVZYMUqXc5juXdHa9LLVfE4pBdSOqF/eWglEQIVD2aWJ4BlW@ZcUbKbCSixNjI6OxKQfSQrHbZvluqrK7LLuG55iWqUnalyp0Liypm1M@rcJXPqs357SrVzVIDnEnAl/3jqjpHLuepFiBARd6UPDJ5U6IxTg6DV3WXpfI454QrAuoDYC77O8K8SyGyvnqQ1JU6ZIO0xlcL5zsVBVf7OUOea7ypYpLx37/@b9@MVETkuAH43FmgSEwPe1UJInzMEwVA7xVBmJ6f4rvAVgfLg8finiHniOKw9K7INSiVAqlQtTZaKJNftZq6mtQCF9jEsdLJt2b1ULlLu1gXABGaAwZI0@NrfsqJLQewPF2OWGzZRGaIzcwoRqYemB8VYKjf0D1wNK17it18zYOhTiO0PcZloSAqCuYbt2VV8pKaLJuq809CIYt4Ck@AdAHbfcJs62Oob/ZVBXwZNp40kXEWaB5CqZNpIEpotxDZmrsZj/ULEvIsFGDUWYhYcjTThCSYa38msbqVyAvJrI/9THpSGhzqDReiLpts4idyV1sc8@kDQuIF@Qr4ls9JFKM3OA0BwQa1w4KrGdRpF6qQSl3uV212xos3YG1aJmSuG0wMBHDF3mE6WfRGhye4wls1Pw@jazSrYDQj9Kr2fL@Lc26ogqO1duFp4@7iA5qrwi94LPLO8ZQq55W@l2j6RZi/0d6fmxssMWJbFnR8e/25J6txi1rsBmwDv74R@sg9xVvsIIlGFoFRgDRZ/Vl0Fgszi@tV5aA1i0nNyMuiSS5ziLizuCE25BXHQqxSoXFYgOrLM1wVoJHiJq3ULF7EnBZylqp0g2QxEDQB4WUG1XQEgmpglj6SQhAnbSaF4qmZKcgVBAdmpvgRAXxUJBbQDM1DGJsbJD@Ewz1wzPCcBd0gMm6I1JiDYvWom1w/z3YmNeAwLQ9i9TzZF1R3vkSxGSH4fJKTJbt1s@D0/L5pIdA8akSfABEU8YvdAMN0U9Z1jglxzNj37RLnRlO0IH8ABQ/AIxpRQr0IOr1psNWSD6UjKzYyQDZU4CvC2ioLAEmSAdnuWNmyVAx5Fmx5uuwsq6WxCtYUIVV8x1pM27HAV8x@vGBXo0jFUpfsRFJMX9vUmb2rC11APQ4mJO6En/Trr32Ek@uIgk7H118mFMdA1f//10Zv2GGyWRDCtebzsLyBFj7jcMm1OCK2zvIWJ9ssYpHbic4JYckwVsGRQC/cNwptRmg1PhxEeYMfJft2WSiXYl/GRCFRF18rPFMjxbF0VnxYESKB680myWbgrKD7KODaMkUn@ngTFJDudmcXS0Wo2AUAILA@P6HK6oG2mkWRH0UlT3VuZE22ov622rVZ5ABfa8ilKR83ybcXrtpHtJ/3w1xYkqAPe96ihlGWrLQo6KJLWgT3UvbUojYEsGpHS@df@wnhYjUdJ76JuQuhgAHDlv6oYNvOzJ4LkmBFfgBFUBZbL1ULHpO1dBBql9dfTaJRLPYAvAxSIECKksc4TPBDvf4fLFfOw/bdXUUn792ltX7cRSgCPZkYAaFUe/WccEEMiHQNTmExqHjbSj20RN8DSZH/IO1Yus71fT9nanPYoQVvFs/bPKLSQWuDvQNAB5TbS7reONJO@Z4xW3nMBCR1Gc6zM@Q2N7YWUjwScR4GjNrL@cLlAtTIPiTvN1IuuMDAFL0OSpFItRPqLJ6vAQB5kdjGZjhjTKPk8PKQ4WUm2yS/RX4TxzUzlhLZv35q6FMBLi5Mbf28cKgxEPUXWUqbf/2ESEcpwt4Qglf1GWtgZy0mu@SjUatTZcRIs3xKwKaiUNJY2GFrsjFg8LF@dLHOIoGYHs94AmvFRjaISdIhyyGi2jssWnLCKnp1BcbegWKRsDpkw/PaAFdhK6Nx8CBsxiI9mG8VD/w3CeVT@RPD@VSUJ7UiNRvCrMgixm/6Lt4cZ650KGHR0AkiwMU1LvLNQu3ff0DFewqn9K3mdCKPElJjV65qlDbHlFVpRRddPxKs@0kDwbgqLBNUnGXQzKV6I3qkvHJ8PlDk5Xbjxi5dbS@DuHTAQRBowXsVBFVATdIJF@6rqA2eEgO19eCkaKsj39mwyeF4yaB2sMgLa/Qg4XNUaiD7EI2gjGalkRC0Sx8gJfKXyLF1hRO1dGlWh8JCHWtCSELAXjhKFNB4OlooCru4GIvJbp5o7MQ1DiLiqoUn40VHa8PvX7JZkygVRJk5pKskuaSK9FRZ4058/bn5MXINtm/LfBSJCXiYNzVtQEWW79dKydFZekBSa2g7obtm75wPPr7yMYrlhMiTCbgGz9GH6P2hY6VCfA2/7q0Hk8AjBM1E1c6mSJijcSq/pZbYHJAGk5NamUgnIqdU5pAK8sccJtNJ43EXO/sgG6AMXBo6bj99XvWCzhcCvMVTxeNslZOedNXpmofzjMQKvawEwj0F1byfiKZyLJ28gsu4yNMmaHstsFNTciGJpc7hyxz@65MOaT8c3C9LyCXLIB71heVOUBUuorRtgUUQIMYYMe2vPHjaMoR9ig/0gR11iENIiqiy6VQPRuHquEhOK@klKn1DO0l@eaODQ@R3paglB9EpfhMmG28Ra@LpbLzlVByIWRGu0VqZPxwRQPeKRYaOgQk8@cnFEhk8@cwRV1bBIXx4Nc9qOZqTy8QCqTOXP4BlKyTZ18K51xY9AA/rAguusZ9YyaMwIYfiM8c7QRCKpIGXL4yfJG@PbrP45NNFFngFOPkQOkrBkal9hxNLn7E8cgDipUeGXWrvmIxFKkUAB6rpmuOXC6bZiy2FJtIkoy3PgbgigOK4JD0fhPqVPpvtTphZ3q2F2Q2CRQwFxKH8HvlQhty6J7YkLybzYgSkJcUHIEcfZKOcowQhYjPqsi13fLyTx8jpEcspXKYv62nuROafrHgUKkYsdVqot1GtzVwxPRr/AF7oBCzNH4uPKeDN5@PM7uZi/nDIlwRkrhDAbT0CObAnz2Fz9acOSK@PvZQqXO02CyhdSwaNbHLsv2R6jYxZF6EQ6ZsCv8K391eRsGhESrBI/GleVBOs6YpYjT4ybYRXRKLOAaKIVUP5WfiyAROTfLjQBekE4LuuJBcEafpOs89TjXROnPwF9QZpYMVwXMdg6WzXHm0BlOigud3wUhwBkdOT0fu4GxRZ882GI8RGK3KXCA3ljD4z1XgAZaPLpwx3FZSnD3zqClM0d6tn2jAZfzyQOlAaP0Q4iECnyTB5qrcf4nOh@DtiOo9IqiUJkujxhxBJWJJs4shtElVPRRJbU3b@SHncTUmUtzgzF@CVZdkP4JsHfXI29O3pZDI@Stk/H1e23CIXz@R@5np8gCrQROUyoJxpwlOYPOzjB7nxoz0exj4qoAVFZcZ@2F@esPqan7BmVA2dJuUtDhKA74tTxM@Kf4zUQNVxkYraYOfmi29Cm2R1Dls5S1B5d0jPmeNNtqE0S1psVNAYW9TbgGfGfCcac9rTW3yJzYsaLy9iPH5GplLO99Mon56e6Ndtn1js24@t@MYDgYd3T38yT@8b7vbTw7qB7n1PRHu1rmVC0Sev@qq6svT7y7ff/dB@/Ng@8btPP6Dggp5v@vhd@/Th6b/01Bob6M5Bhx8ox7sgjRw@fUW1b5xEGdHLd3nsD@3zH5/fn4Y5dVZe9tTn8O6o6O/ar470oZ3l9lHDoQfRfv5OS/Pu8zcSmXHAoDFcL//z9P79@@@/@/bb3Psn4T/B/8ib6HeT39ysMu/4Dp66/P4HVAUWy7/g7vUJmc2Ed89/fvPmX57rxDCfD8@sz4fn9@@fmvRG7uP9b7/9Bw "Python 3 – Try It Online"
- [TIO-lmzg5d4n]: https://tio.run/##FY/LbcRQCEVbmZ1nJJRNOqAT3jNjM@Z9gk0sTz9pIt2kEgdvjg666Ar6sc2tfp5nN6nbfTDBp0yQyDCJ4sg7Flfc6EBK4hGwwkgbg0oJuDaozAVqqwKdyaCLhqkXMCkOqzaGtVmCw99RwFe1OmM2qoG2Ixe/4Ux5wZdXxqsZu4QZrR33y/amTzx4v2GsMQMtnASodw03ehNkytSCXy5Bawl4szbB9Pf7k2Ey6gyT0zeBKBWCF8UES1vi0MUTKSiXVqFQnRoU1su9jh5c5/iSaubhw7grZb4POMCQ2OyA4fE4z38 "Python 3 – Try It Online"
- # [Python 3], ~~319~~ 318 bytes
- ```python
- print('riBfig,barBbilBdewBmulBtayBabiu,bael,date,lime,lulo,neem,noni,pear,pili,plum,rimu,sloe,sorb,yuzu,bearBblueBcranBcrowBemu BhackBjuneBlimeBpineBraspBwineBwolfByew Backee,akebi,apple,araza,cacao,caqui,carob,etrog,gấc,grape,guava,ilama,jagua,kokum,kubal,lemon,mango,melon,mundu,musho,nance'.replace('B','berry,'))
- ```
- [Try it online!][TIO-lmzg5d4n]
- ---
- *1 byte saved thanks to [msb's comment](https://codegolf.codidact.com/comments/thread/8512#comment-21966) which made me realise I was sorting the fruit by string length (which measures characters instead of bytes, making fruits with diacritics seem shorter than they really are).*
- ---
- This works by representing `berry,` (including the comma) as `B` (with no comma). This means that every fruit that ends in "berry" can effectively save 5 bytes. It turns out there are enough berries to make the 22 byte cost of `replace` worthwhile.
- This is the 55 shortest fruits measuring length after substituting "berry," with "B". I generated the code using this code:
- ```python
- a = """abiu
- açaí
- acerola
- achacha
- ackee
- afghan cherry
- african baobab fruit
- african cherry orange
- african custard-apple
- african locust bean
- african mango
- african mangosteen
- african oil palm fruit
- african peach
- aguasiqui
- akebi
- alaskan bunchberry
- allegheny plum
- almond
- almond-leaved pear
- amanatsu
- amazon grape
- ambarella
- american beautyberry
- american black elderberry
- american mayapple
- american oil palm fruit
- american persimmon
- american plum
- american red elderberry
- american red raspberry
- angular sea-fig
- annonilla
- apple
- apple berry
- apricot
- apricot plum
- apricot-leaved pear
- arabian coffee
- arabian wild almond
- araticum-cagão
- aratincum do para
- araza
- arctic raspberry
- armenian blackberry
- asam gelugur
- asam kelubi
- asian pear
- atemoya
- atherton raspberry
- australian baobab fruit
- avocado
- babaco
- bacuri
- bael
- bailan melon
- bajoura citron
- balatá
- balloon berry
- bambangan
- banana
- banana melon
- banana passionfruit
- banana yucca
- barberry
- beach plum
- beach strawberry
- beach sugar apple
- bear's plum
- bearberry
- bell apple
- bemange
- bengal currant
- bergamot orange
- bignay
- bilberry
- bilberry cactus fruit
- bilimbi
- binjai
- birchleaf pear
- bird cherry
- biribá
- bitter orange
- black apple
- black cherry
- black currant
- black mulberry
- black plum
- black raspberry
- black sapote
- blackberry
- blackcurrant
- blood lime
- blood orange
- blue guarri
- blue passionfruit
- blue sweet calabash
- blue tongue
- blueberry
- bokhara plum
- bolivian mountain coconut
- bolwarra
- bombona
- boquila
- borojó
- boysenberry
- brazil cherry
- brazilian guava
- breadfruit
- breadnut
- briançon apricot
- brush cherry
- buddha's hand
- buffalo-thorn
- burahol
- burdekin plum
- burmese grape
- bush butter fruit
- bushveld bluebush
- button mangosteen
- cacao
- cactus pear
- cainito
- calabur fruit
- calamondin
- california blackberry
- callery pear
- calva crabapple
- cam sành
- cambuci
- camu camu
- canadian bunchberry
- canadian serviceberry
- canary melon
- canistel
- cantaloupe
- cape gooseberry
- caqui
- cardón fruit
- carob
- cashew apple
- casimiroa
- cassabanana
- cattley guava
- caviar lime
- cawesh
- cedar bay cherry
- cempedak
- centennial variegated kumquat
- cerrado pear
- ceylon gooseberry
- changunga
- chaplaish
- charichuelo
- cherimoya
- cherry
- cherry elaeagnus
- cherry laurel
- cherry of the rio grande
- cherry plum
- chickasaw plum
- chico fruit
- chilean guava
- chinese bramble berry
- chinese bush cherry
- chinese crab apple
- chinese date
- chinese flowering apple
- chinese pearleaf crabapple
- chinese plum
- chinese quince
- chinese serviceberry
- chinese sour cherry
- chinese white pear
- chocolate vine fruit
- choke cherry
- chokeberry
- citron
- citron melon
- clementine
- cloudberry
- clove cherry
- cluster fig
- coarse dodder-laurel fruit
- coastal serviceberry
- cocky apple
- coco de mer
- coconut
- cocoplum
- coffeeberry
- cone cherry
- conkerberry
- copperleaf snowberry
- cornelian cherry
- corozo palm fruit
- costa rican guava
- country-almond
- courbaril
- crab apple
- cranberry
- crane melon
- creek plum
- creeping raspberry
- crenshaw melon
- crowberry
- cudrang
- cupuaçu
- currant
- curry berry
- curuba
- custard apple
- cut-leaf crabapple
- cutleaf evergreen blackberry
- cyclamin cherry
- damson
- darvaz plum
- darwin's barberry
- date
- date-plum
- david's peach
- davidson's plum
- dawyck cherry
- dead man's fingers
- delicious raspberry
- desert almond
- desert apricot
- desert fig
- desert lime
- desert peach
- desert quandong
- dewberry
- dog cherry
- doub palm fruit
- downy serviceberry
- dragon fruit
- dragonfruit
- dugdug
- durian
- dusky pear
- dutchman's laudanum
- dwarf jelly palm fruit
- dwarf red blackberry
- dwarf russian almond
- dwarf yatay palm fruit
- eastern crabapple
- eastern mayhaw
- eastern teaberry
- egg fruit
- elderberry
- elephant apple
- elmleaf blackberry
- emblic
- emu apple
- emu berry
- engkala
- etrog
- european cantaloupe
- european crab apple
- european dewberry
- european dwarf cherry
- european plum
- european red raspberry
- european wild pear
- fe'i banana
- feijoa
- fergana peach
- fibrous satinash
- fig
- finger lime
- fingered citron
- five-leaved bramble berry
- flatwoods plum
- florentine citron
- florentine crabapple
- flowering almond
- fony baobab fruit
- fox grape
- fuji cherry
- gấc
- galia melon
- gamboge
- gandaria
- gansu peach
- garcinia cambogia
- garden dewberry
- garlic passionfruit
- gaya melon
- giant granadilla
- goji berry
- golden himalayan raspberry
- golden kiwifruit
- gomortega
- gooseberry
- grape
- grapefruit
- gray-leaf cherry
- green plum
- green sapote
- greengage
- grewia asiatica
- guarana
- guava
- guavaberry
- gubinge
- gummy bear fruit
- gympie-gympie fruit
- hackberry
- hairless rambutan
- hala fruit
- hall crabapple
- hardy kiwi
- haruka
- hawaiian raspberry
- hawthorn
- hawthorn berry
- himalayan bird cherry
- hokkaido bird cherry
- hollyleaf cherry
- honeyberry
- honeydew
- honeydew melon
- honeysuckle
- horned melon
- hortulan plum
- huckleberry
- hyuganatsu
- ice-cream bean
- ichang papeda
- ilama
- indian wild pear
- italian plum
- iyokan
- jabuticaba
- jackal food
- jackfruit
- jagua
- jambolan
- jambul
- japanese alpine cherry
- japanese apricot
- japanese bird cherry
- japanese bramble berry
- japanese bush cherry
- japanese cherry
- japanese crab
- japanese plum
- japanese silverberry
- jelly palm fruit
- jentik
- jiangsu kumquat
- jícama
- jícara
- jocote
- jostaberry
- jujube
- juneberry
- juniper berry
- kabosu
- kaffir lime
- kahikatea
- kaido crab apple
- kajari melon
- kanpei
- karkalla fruit
- kawachi bankan
- kazak pear
- kei apple
- keledang
- kelsey plum
- keluak
- kesusu
- key lime
- khirni
- king coconut
- kinkoji unshiu
- kinnow
- kiwano
- kiwano rund
- kiwifruit
- kiyomi
- kobayashi mikan
- koji orange
- kokum
- kola nut
- kolkhoznitsa melon
- korean blackberry
- korean juneberry
- korean melon
- korean raspberry
- korlan
- kousa dogwood fruit
- kubal
- kumquat
- kundong
- kwai muk
- lala palm
- langsat
- lardizabala
- lebanese wild apple
- lemon
- lemon aspen fruit
- lemon drop mangosteen
- lemonadeberry
- lime
- limeberry
- limequat
- lingonberry
- little gooseberry
- loganberry
- long-peduncled almond
- longan
- loquat
- lovi-lovi
- low juneberry
- low serviceberry
- lúcuma
- lulo
- luóhàn guǒ
- lychee
- magellan barberry
- malabar plum
- malay rose apple
- mamey apple
- mamey sapote
- mamin chino
- mammee
- manchurian apricot
- manchurian cherry
- manchurian crab apple
- mandacaru
- mandarin orange
- mandarine
- mangaba
- mango
- mangosteen
- mangshanyegan
- manoao
- maqui berry
- maracuja bravo
- maracuja mochila
- maracuja redondo
- marionberry
- marolo
- marula
- massaranduba
- mayapple
- maypop
- medlar
- melogold
- melon
- menteng
- mexican plum
- meyer lemon
- midgen berry
- miracle fruit
- mirza melon
- miyama cherry
- mock strawberry
- molucca bramble berry
- momordica fruit
- monkey fruit
- monkey jackfruit
- monkeypod
- monstera deliciosa
- mora común
- mora de castilla
- moriche palm fruit
- mortiño
- mountain raspberry
- mountain serviceberry
- mountain snowberry
- mountain soursop
- mouse melon
- mulberry
- mundu
- muntrie
- murray's plum
- muscadine
- musho
- musk melon
- muskmelon
- myrtle-leaved orange
- mysore raspberry
- nageia
- nance
- nanjing cherry
- nannyberry
- nantucket serviceberry
- naranjilla
- natal orange
- native cherry
- native currant
- nectarine
- neem
- nepalese raspberry
- nepali hog plum
- new zealand passionfruit
- niedzwetzky's apple
- nipa palm fruit
- nokaidō
- noni
- north american cantaloupe
- nutmeg fruit
- ōgonkan
- ojai pixie
- oklahoma plum
- oleaster-leafed pear
- olosapo
- ooray
- orange
- oregon grape
- oroblanco
- oshima cherry
- otaheite gooseberry
- oval kumquat
- pacific crabapple
- pacific plum
- pale serviceberry
- papaya
- partridgeberry
- passionfruit
- pawpaw
- peach
- peanut butter fruit
- pear
- peluntan
- pennsylvania blackberry
- pepino
- pequi
- perfumed passionfruit
- persimmon
- peruvian apple cactus fruit
- phalsa
- pigeon plum
- pili
- pillar apple
- pin cherry
- pineapple
- pineberry
- pingan
- pink banana
- pinkglow pineapple
- pitanga
- pitaya
- pitomba
- pitomba-da-bahia
- plantain
- plinia
- plum
- plum pine fruit
- plumcot
- plumleaf crab apple
- pluot
- plymouth pear
- podocarpus
- pomegranate
- pomelo
- pompia
- pond apple
- ponderosa lemon
- poro poro
- prairie crabapple
- pratt's crabapple
- prickly pear fruit
- prumnopitys
- prune
- pudau
- pulasan
- purple apple-berry
- purple guava
- purple mangosteen
- purple-flowered raspberry
- puruí
- queen palm fruit
- quince
- raisin
- raisin tree fruit
- rambutan
- ramontchi
- rangpur
- raspberry
- red banana passionfruit
- red bush apple
- red currant
- red fruit
- red huckleberry
- red mulberry
- red passionfruit
- red salak
- redcurrant
- rhubarb
- riberry
- rimu
- rose apple
- rose hip
- roseleaf bramble berry
- round lime
- roundleaf serviceberry
- rowan
- rukam
- sabal palm fruit
- sageretia
- saguaro fruit
- salak
- salal
- salal berry
- salmonberry
- sampang
- sand cherry
- sandpaper fig
- sansapote
- santa claus melon
- santol
- sapodilla
- sapote
- sargent crabapple
- sargent's cherry
- saskatoon
- satsuma
- satsuma mandarin
- savannah cherry
- saw palmetto fruit
- sawtooth blackberry
- scarlet firethorn
- scarlet passionfruit
- sea anemone passionfruit
- sea buckthorn
- sea coconut
- sea grape
- shangjuan
- shine muscat
- shipova
- shoebutton ardisia
- shonan gold
- shrub apple
- siberian apricot
- siberian crab apple
- sikkim crabapple
- silver almond
- silver buffaloberry
- silver peanut butter fruit
- sloe
- small-leaved fuchsia
- small-leaved myrtle berry
- small-leaved tamarind
- smooth blackberry
- smooth davidson's plum
- smooth serviceberry
- smooth stone peach
- snow pear
- snow raspberry
- snowy mespilus
- solomon's plume
- soncoya
- sorb
- sour cherry
- sour fig
- sourplum
- soursop
- south american sapote
- southern crabapple
- spanish cherry
- spanish lime
- spanish tamarind
- sprite melon
- staghorn sumac
- star apple
- star fruit
- stinking passionfruit
- stone bramble berry
- strangler fig
- strawberry
- strawberry tree fruit
- sudachi
- sugar plum
- sugar-apple
- surinam cherry
- susung-kalabaw
- swartbas
- sweet apple-berry
- sweet calabash
- sweet crabapple
- sweet granadilla
- sweet limetta
- sycamore fig
- syrian pear
- taiwan cherry
- taiwan crabapple
- taiwan tangerine
- tamaran
- tamarillo
- tamarind
- tamarind-plum
- tangelo
- tangerine
- tangor
- tapia
- tayberry
- terap
- terap hitam
- terap nasi
- terengganu cherry
- texas almond
- texas peach
- texas persimmon
- thimbleberry
- tianshan cherry
- tigger melon
- tilap
- toad tree fruit
- toringo crabapple
- totara
- toyon
- ugli fruit
- ussurian pear
- utah serviceberry
- vanilla
- velvet apple
- velvet tamarind
- viagra palm
- vitis vinifera
- volkamer lemon
- wampee
- water lemon
- watermelon
- watery rose apple
- wax apple
- white aspen berry
- white bark raspberry
- white currant
- white fig
- white kwai muk
- white mulberry
- white passionfruit
- white sapote
- white-stemmed bramble
- wiegand's serviceberry
- wild cherimoya
- wild cherry
- wild dilly
- wild himalayan cherry
- wild jack
- wild orange
- wild peach
- wild strawberry
- willow leaf cherry
- wineberry
- winter-flowering cherry
- wolfberry
- wongi
- wood-apple
- wooly jelly palm fruit
- ximenia
- yangmei
- yantok
- yatay palm fruit
- yellow granadilla
- yellow mombin
- yellow plum
- yew berry
- yoshino cherry
- youngberry
- yunnan crabapple
- yuzu
- zig-zag vine fruit
- zwetschge"""
- all_fruits = a.split("\n")
- berry_words = [word for word in all_fruits if word[-5:] == "berry"]
- other_words = [word + "," for word in all_fruits if word not in berry_words]
- shortened_berry_words = [word.replace("berry", 'B') for word in berry_words]
- words = sorted(other_words + shortened_berry_words, key=lambda x:len(x.encode("utf-8")))[:55]
- words_as_string = "".join(words)[:-1]
- program = f"print('{words_as_string}'.replace('B','berry,'))"
- print(program)
- ```
- [Try it online!][TIO-lmzftgr9]
- ## My initial failed attempts
- Before I found this approach I tried shortening the other two Python 3 answers, but in both cases my misguided efforts only made the code longer...
- ### Trying to shorten [steffan153's answer](https://codegolf.codidact.com/posts/287088/287094#answer-287094)
- I noticed that some of the fruits had diacritics, which makes them longer in bytes than they appear, so instead of just using the 55 shortest fruit by characters, I used the 55 shortest fruit after throwing away any fruit with diacritics, like gấc and açaí. However, since we've already used up all of the fruit of length 5 bytes or less, each diacritic fruit removed brings in another 6 byte fruit, so the total length of the code went up by a byte:
- ```python
- print('fig abiu bael date lime lulo neem noni pear pili plum rimu sloe sorb yuzu ackee akebi apple araza cacao caqui carob etrog grape guava ilama jagua kokum kubal lemon mango melon mundu musho nance ooray peach pequi pluot prune pudau rowan rukam salak salal tapia terap tilap toyon wongi almond babaco bacuri banana bignay')
- ```
- [Try it online!][TIO-l8r3k4fp]
- ### Trying to shorten [Moshi's answer](https://codegolf.codidact.com/posts/287088/287095#answer-287095)
- I thought I could save some bytes by using fewer distinct characters in the list of fruits, since all of these need to be listed in the `while` loop that extracts the data. So I repeatedly found the letter present in fewest fruits, and discarded all fruits containing that letter, stopping short of ending up with fewer than 55 fruits remaining. This left me with only 14 distinct characters, down from 16 in the original code. However, the 2 bytes this saved were overwhelmed by the fact that the new list of 55 fruits contained longer fruits, since I'd discarded some of the shorter ones, leaving the code 14 bytes longer:
- ```python
- from base64 import*
- n=int.from_bytes(b85decode('5YBr@2zdh)fdaH`|L?o31mzCMMOw^}6Gp}*cGPdkWp!!fj9sk(ll2zIiI9x(m!Z#)4FT|UW1Q!@&rHc#p7PfklqbhsG`5TO^jF^L@qmX-@zKRADY>W*()(`#6^w=;IP9xHTgMq6GED;7>E#S9WNiB|2eKZ!HJ!qD(`e}qPwt+~b^KgJISyhSv!lv?ba68XFLI3{>}kf^>gaG928Ym{URfadB71USJH9{@PJ;Ya'),'big')
- while n:print(end="ambling poetry"[n%14]);n//=14
- ```
- [Try it online!][TIO-l8r46k1t]
- ---
- In hindsight I have no idea why I thought either of my initial approaches would work.
- [Python 3]: https://docs.python.org/3/
- [TIO-l8r3k4fp]: https://tio.run/##HZBBdsMwCESvMru0655oJFNHFRKqLJrnXN4h3XyG1R8Y57pb/7quMUtfH7fvsoOpOBJFsXEJtLSAq6GLNHTrBUM4MYpGUm@YpTkONcFhM@H0p4O5ioBVUgHH0MiTTyIz04K/XoLTEmRN27FPDsHu/COKshE/jA3VahiqJypUmnU09t3QRN/Z@@bB4x712LPAbPJ8F8z34NsSFW1hTO@C4Rsd0x7smF7ZcFBZ/6lYHIVYElWwokTQzrA8rO9xhYZ9i88kZouRfZYYoSVS2TvP2@d1vQA "Python 3 – Try It Online"
- [TIO-l8r46k1t]: https://tio.run/##FdDZUoJQAADQd79CZEqwxQERJQYkU1nUJNFRbCJALouyw7ig9utUz@ftxOfcjcJWWdppFFRNIwMkUfWCOErzRiVkvDB//pdv85yDDDG7bQtsIwsg9bbaTzm8sFzUtgxBv056UQsLirfpdHbUbiQf3xpbXrb2qxiC7B2V7RHfxwvRE6kTEkAbGCVGi@tyhX1A3H0qbOG4I9t7PzHdjNfbi5m2G2kTLgnWT1wxnr8OVHbVQFBEh0ntyNCiTJ2EhTNNSH44oDvsEFao1bvXv@JgvIEECUoGiA5uiXzMH35MbexIonJ2lQPkH3qmQXbXo4nYurC3va2xjsFTeFcNLsu5bVj9DrZUJIG6cLJEq0YdfaybnlNHK0fX80E1fInTvxMEhBZTMwLT90KnGkcgT8@1z/AOI75QOmw2GYwoy18 "Python 3 – Try It Online"
- [TIO-lmzftgr9]: https://tio.run/##hVpNjuS4sd7rFEJtqhvuHMAwBngYoDe@xnjQoCSmxBRFaviT2SrDR5iNT2DDePBqFg@zm23BeOfwScZfBH8kVTdgVEGMCElkMBiM@ILKdQuTNX/47TfRfmyfnp5Ep2IjXv8pXn9uRC@d1QLtRP9oZykbcR0nYdp@ks5t4JzqwXbCdqJrry6qUIXpmdY6YUa5S6MPwg0Xsa56l2pL8raTwlTZgvfsmfNByv0Bq3S7Cr28GXeV0LcRYxRe/RhVI2bZ4aqFn0nVaPqpS9prLcdJmq1ddVzALtYMubloKe5yoM5cIzC4CD4S8WJNOzqxQvelE05qMtEisx2kiGHLvVehhulaqQfp3txZxJbNUCRvp1Tkq3ReLVDsIGKdC@eg69eGILkTfs1iM0YtXOuluFzVCN5Yo3gKSQ@6tvnZFT3YUNo8XmLO1nFwG1pZe72Sh2T2ofTQFps6EVQfl0svxtd/2MQbCNrBYr5OkOSFrj2eOyrsFmlUMWKWebG0o9RxjC4xMxhaYq/S8kMc5GI3dBjghAFLdugSjuaEVl@47d32YrANJKKnpo9OoZEaF6VpuaTGAnTiZqMTba@CY1aL8Pp3arW1JhuvI@cwo6D7Bn@5qV0wswrvlTVp@CzbYt/T03kdO/LlZPpEku6P4z0fRyxoWj5I3LOvj9c@tK4PLLwZOwndNPaiw@bE2NKNYsEa573aqdEIvKh07iETbS/6EH02GKRqgdk7ZW6CGtdP8ItrWgGwQwkToFVHNlIhSFdH4X2RFWO6PJ6YohxzSyy6MJumyOS@son3YrUh93iQ791ZO7TQXGayahNli5jhaNGJPq8OSfxDygAbaHiIn5IMvjXG9HYezM4TnDlraLW6k6ctNpogFG2S3poY6M4DY2Gp7dJZchCLWKWpdfb2@gvazUuT@8TmQGAo5mGOeoW6d7zhpBiymkRy9w73X/8JfyzbuHPRT7WLOAyTgKsglg/grleh7QW5wME54dyT1dQOclY50IBbpJc59HXUVxd5NfPIkNwRgFq2RCTz4LY9xW14j7BN9iF2kh4mUYFksGksfRFHYUPRK1pdoZUSxwjQU@SGO@Y@9B27EVEnuVKPgOBf/2YmorrYK2pjSxdQRgzqnAWqzEt3V73cpRgh7VcwClPQRARYKq40zAprWOvrC5RreqS2119MnYizHa5@ko@2aIc4rpwVRHmRo0MvQtByywvaC/iMSz7ai4eEMXs5QNKJraxgL5cVshmECdLAQLq9C6fkiNA3tHNcfowCGuBhQTGWLSU3TdnroPREGQGxgKhVC0VDwX1VP0XMvKHBFAfSMmzK6VILKUYTfRFoER3ZJ6f8a4u42zplyV/MIMsNdqV@Uv2MuP3YWVsMNilEkOLY4Az5HBx@6WpeqtKDPxcZeUExdBYNsEdlrto@MCMzvnmIzMOh6@BG5VbWkRkssen3e2ePKUJkh7d6PSYVZF6ECREAKUO2d9yr87az3F8Ck/tMOSY1xRm1RE5E@oQecMUhP6ntfe9BI8fR1kSK761wZAY7ABxc0jqVUa0AFtNvpmH7eSvmgartIDGwa0rgojbZhNN9ecnsg1szFxiCR4Fc2LLe2EcROiM5ftU3nH2xR9zTI2KINiGY7AsUQN12yYACrEOSVHC5w5LD1/IQoGSxl5MyJwwiV1r9PWdAZPwEXywPVy3jQIkB7RqBiBE7cgKhdiu@GF3soFzCtEWNyPjo5EwxsETekWmhxAnP9FuPeKeqOQaxeKiCDX8XL0lx0A9lEK8rMGC3psslP3BXw7PP2Jc59FGwwCAe255eB@QICsu4e4UxgCwh0qpXFmF5t8wAx3WhILjC5WySWXKwTHK0ynTWIjGIQ2ZAlgSfTTvYsepiY3dc@ME@AMdPDollGG2JqInJdBzxj4ZyHRo/54wwxNBPaYLw90EYMgGy7bW9AQptp/FYTCD5sCBZGD3jyWIAFm4iiFMHUtBOM4e1LhKAe/hVZYMUqXc5juXdHa9LLVfE4pBdSOqF/eWglEQIVD2aWJ4BlW@ZcUbKbCSixNjI6OxKQfSQrHbZvluqrK7LLuG55iWqUnalyp0Liypm1M@rcJXPqs357SrVzVIDnEnAl/3jqjpHLuepFiBARd6UPDJ5U6IxTg6DV3WXpfI454QrAuoDYC77O8K8SyGyvnqQ1JU6ZIO0xlcL5zsVBVf7OUOea7ypYpLx37/@b9@MVETkuAH43FmgSEwPe1UJInzMEwVA7xVBmJ6f4rvAVgfLg8finiHniOKw9K7INSiVAqlQtTZaKJNftZq6mtQCF9jEsdLJt2b1ULlLu1gXABGaAwZI0@NrfsqJLQewPF2OWGzZRGaIzcwoRqYemB8VYKjf0D1wNK17it18zYOhTiO0PcZloSAqCuYbt2VV8pKaLJuq809CIYt4Ck@AdAHbfcJs62Oob/ZVBXwZNp40kXEWaB5CqZNpIEpotxDZmrsZj/ULEvIsFGDUWYhYcjTThCSYa38msbqVyAvJrI/9THpSGhzqDReiLpts4idyV1sc8@kDQuIF@Qr4ls9JFKM3OA0BwQa1w4KrGdRpF6qQSl3uV212xos3YG1aJmSuG0wMBHDF3mE6WfRGhye4wls1Pw@jazSrYDQj9Kr2fL@Lc26ogqO1duFp4@7iA5qrwi94LPLO8ZQq55W@l2j6RZi/0d6fmxssMWJbFnR8e/25J6txi1rsBmwDv74R@sg9xVvsIIlGFoFRgDRZ/Vl0Fgszi@tV5aA1i0nNyMuiSS5ziLizuCE25BXHQqxSoXFYgOrLM1wVoJHiJq3ULF7EnBZylqp0g2QxEDQB4WUG1XQEgmpglj6SQhAnbSaF4qmZKcgVBAdmpvgRAXxUJBbQDM1DGJsbJD@Ewz1wzPCcBd0gMm6I1JiDYvWom1w/z3YmNeAwLQ9i9TzZF1R3vkSxGSH4fJKTJbt1s@D0/L5pIdA8akSfABEU8YvdAMN0U9Z1jglxzNj37RLnRlO0IH8ABQ/AIxpRQr0IOr1psNWSD6UjKzYyQDZU4CvC2ioLAEmSAdnuWNmyVAx5Fmx5uuwsq6WxCtYUIVV8x1pM27HAV8x@vGBXo0jFUpfsRFJMX9vUmb2rC11APQ4mJO6En/Trr32Ek@uIgk7H118mFMdA1f//10Zv2GGyWRDCtebzsLyBFj7jcMm1OCK2zvIWJ9ssYpHbic4JYckwVsGRQC/cNwptRmg1PhxEeYMfJft2WSiXYl/GRCFRF18rPFMjxbF0VnxYESKB680myWbgrKD7KODaMkUn@ngTFJDudmcXS0Wo2AUAILA@P6HK6oG2mkWRH0UlT3VuZE22ov622rVZ5ABfa8ilKR83ybcXrtpHtJ/3w1xYkqAPe96ihlGWrLQo6KJLWgT3UvbUojYEsGpHS@df@wnhYjUdJ76JuQuhgAHDlv6oYNvOzJ4LkmBFfgBFUBZbL1ULHpO1dBBql9dfTaJRLPYAvAxSIECKksc4TPBDvf4fLFfOw/bdXUUn792ltX7cRSgCPZkYAaFUe/WccEEMiHQNTmExqHjbSj20RN8DSZH/IO1Yus71fT9nanPYoQVvFs/bPKLSQWuDvQNAB5TbS7reONJO@Z4xW3nMBCR1Gc6zM@Q2N7YWUjwScR4GjNrL@cLlAtTIPiTvN1IuuMDAFL0OSpFItRPqLJ6vAQB5kdjGZjhjTKPk8PKQ4WUm2yS/RX4TxzUzlhLZv35q6FMBLi5Mbf28cKgxEPUXWUqbf/2ESEcpwt4Qglf1GWtgZy0mu@SjUatTZcRIs3xKwKaiUNJY2GFrsjFg8LF@dLHOIoGYHs94AmvFRjaISdIhyyGi2jssWnLCKnp1BcbegWKRsDpkw/PaAFdhK6Nx8CBsxiI9mG8VD/w3CeVT@RPD@VSUJ7UiNRvCrMgixm/6Lt4cZ650KGHR0AkiwMU1LvLNQu3ff0DFewqn9K3mdCKPElJjV65qlDbHlFVpRRddPxKs@0kDwbgqLBNUnGXQzKV6I3qkvHJ8PlDk5Xbjxi5dbS@DuHTAQRBowXsVBFVATdIJF@6rqA2eEgO19eCkaKsj39mwyeF4yaB2sMgLa/Qg4XNUaiD7EI2gjGalkRC0Sx8gJfKXyLF1hRO1dGlWh8JCHWtCSELAXjhKFNB4OlooCru4GIvJbp5o7MQ1DiLiqoUn40VHa8PvX7JZkygVRJk5pKskuaSK9FRZ4058/bn5MXINtm/LfBSJCXiYNzVtQEWW79dKydFZekBSa2g7obtm75wPPr7yMYrlhMiTCbgGz9GH6P2hY6VCfA2/7q0Hk8AjBM1E1c6mSJijcSq/pZbYHJAGk5NamUgnIqdU5pAK8sccJtNJ43EXO/sgG6AMXBo6bj99XvWCzhcCvMVTxeNslZOedNXpmofzjMQKvawEwj0F1byfiKZyLJ28gsu4yNMmaHstsFNTciGJpc7hyxz@65MOaT8c3C9LyCXLIB71heVOUBUuorRtgUUQIMYYMe2vPHjaMoR9ig/0gR11iENIiqiy6VQPRuHquEhOK@klKn1DO0l@eaODQ@R3paglB9EpfhMmG28Ra@LpbLzlVByIWRGu0VqZPxwRQPeKRYaOgQk8@cnFEhk8@cwRV1bBIXx4Nc9qOZqTy8QCqTOXP4BlKyTZ18K51xY9AA/rAguusZ9YyaMwIYfiM8c7QRCKpIGXL4yfJG@PbrP45NNFFngFOPkQOkrBkal9hxNLn7E8cgDipUeGXWrvmIxFKkUAB6rpmuOXC6bZiy2FJtIkoy3PgbgigOK4JD0fhPqVPpvtTphZ3q2F2Q2CRQwFxKH8HvlQhty6J7YkLybzYgSkJcUHIEcfZKOcowQhYjPqsi13fLyTx8jpEcspXKYv62nuROafrHgUKkYsdVqot1GtzVwxPRr/AF7oBCzNH4uPKeDN5@PM7uZi/nDIlwRkrhDAbT0CObAnz2Fz9acOSK@PvZQqXO02CyhdSwaNbHLsv2R6jYxZF6EQ6ZsCv8K391eRsGhESrBI/GleVBOs6YpYjT4ybYRXRKLOAaKIVUP5WfiyAROTfLjQBekE4LuuJBcEafpOs89TjXROnPwF9QZpYMVwXMdg6WzXHm0BlOigud3wUhwBkdOT0fu4GxRZ882GI8RGK3KXCA3ljD4z1XgAZaPLpwx3FZSnD3zqClM0d6tn2jAZfzyQOlAaP0Q4iECnyTB5qrcf4nOh@DtiOo9IqiUJkujxhxBJWJJs4shtElVPRRJbU3b@SHncTUmUtzgzF@CVZdkP4JsHfXI29O3pZDI@Stk/H1e23CIXz@R@5np8gCrQROUyoJxpwlOYPOzjB7nxoz0exj4qoAVFZcZ@2F@esPqan7BmVA2dJuUtDhKA74tTxM@Kf4zUQNVxkYraYOfmi29Cm2R1Dls5S1B5d0jPmeNNtqE0S1psVNAYW9TbgGfGfCcac9rTW3yJzYsaLy9iPH5GplLO99Mon56e6Ndtn1js24@t@MYDgYd3T38yT@8b7vbTw7qB7n1PRHu1rmVC0Sev@qq6svT7y7ff/dB@/Ng@8btPP6Dggp5v@vhd@/Th6b/01Bob6M5Bhx8ox7sgjRw@fUW1b5xEGdHLd3nsD@3zH5/fn4Y5dVZe9tTn8O6o6O/ar470oZ3l9lHDoQfRfv5OS/Pu8zcSmXHAoDFcL//z9P79@@@/@/bb3Psn4T/B/8ib6HeT39ysMu/4Dp66/P4HVAUWy7/g7vUJmc2Ed89/fvPmX57rxDCfD8@sz4fn9@@fmvRG7uP9b7/9Bw "Python 3 – Try It Online"
- [TIO-lmzg5d4n]: https://tio.run/##FY/LbcRQCEVbmZ1nJJRNOqAT3jNjM@Z9gk0sTz9pIt2kEgdvjg666Ar6sc2tfp5nN6nbfTDBp0yQyDCJ4sg7Flfc6EBK4hGwwkgbg0oJuDaozAVqqwKdyaCLhqkXMCkOqzaGtVmCw99RwFe1OmM2qoG2Ixe/4Ux5wZdXxqsZu4QZrR33y/amTzx4v2GsMQMtnASodw03ehNkytSCXy5Bawl4szbB9Pf7k2Ey6gyT0zeBKBWCF8UES1vi0MUTKSiXVqFQnRoU1su9jh5c5/iSaubhw7grZb4POMCQ2OyA4fE4z38 "Python 3 – Try It Online"
#3: Post edited
- # [Python 3], ~~319~~ 318 bytes
- ```python
- print('riBfig,barBbilBdewBmulBtayBabiu,bael,date,lime,lulo,neem,noni,pear,pili,plum,rimu,sloe,sorb,yuzu,bearBblueBcranBcrowBemu BhackBjuneBlimeBpineBraspBwineBwolfByew Backee,akebi,apple,araza,cacao,caqui,carob,etrog,gấc,grape,guava,ilama,jagua,kokum,kubal,lemon,mango,melon,mundu,musho,nance'.replace('B','berry,'))
- ```
- [Try it online!][TIO-lmzg5d4n]
This works by representing `berry,` (including the comma) as `B`. This means every fruit that ends in "berry" can effectively save 5 bytes. It turns out there are enough berries to make the 22 byte cost of `replace` worthwhile.This is the 55 shortest fruits measuring length after substituting "berry," with "B". I generated the code using this code: [Try it online!][TIO-lmzftgr9]- ---
- *1 byte saved thanks to [msb's comment](https://codegolf.codidact.com/comments/thread/8512#comment-21966) which made me realise I was sorting the fruit by string length (which measures characters instead of bytes, making fruits with diacritics seem shorter than they really are).*
- ---
- ## My initial failed attempts
- Before I found this approach I tried shortening the other two Python 3 answers, but in both cases my misguided efforts only made the code longer...
- ### Trying to shorten [steffan153's answer](https://codegolf.codidact.com/posts/287088/287094#answer-287094)
- I noticed that some of the fruits had diacritics, which makes them longer in bytes than they appear, so instead of just using the 55 shortest fruit by characters, I used the 55 shortest fruit after throwing away any fruit with diacritics, like gấc and açaí. However, since we've already used up all of the fruit of length 5 bytes or less, each diacritic fruit removed brings in another 6 byte fruit, so the total length of the code went up by a byte:
- ```python
- print('fig abiu bael date lime lulo neem noni pear pili plum rimu sloe sorb yuzu ackee akebi apple araza cacao caqui carob etrog grape guava ilama jagua kokum kubal lemon mango melon mundu musho nance ooray peach pequi pluot prune pudau rowan rukam salak salal tapia terap tilap toyon wongi almond babaco bacuri banana bignay')
- ```
- [Try it online!][TIO-l8r3k4fp]
- ### Trying to shorten [Moshi's answer](https://codegolf.codidact.com/posts/287088/287095#answer-287095)
- I thought I could save some bytes by using fewer distinct characters in the list of fruits, since all of these need to be listed in the `while` loop that extracts the data. So I repeatedly found the letter present in fewest fruits, and discarded all fruits containing that letter, stopping short of ending up with fewer than 55 fruits remaining. This left me with only 14 distinct characters, down from 16 in the original code. However, the 2 bytes this saved were overwhelmed by the fact that the new list of 55 fruits contained longer fruits, since I'd discarded some of the shorter ones, leaving the code 14 bytes longer:
- ```python
- from base64 import*
- n=int.from_bytes(b85decode('5YBr@2zdh)fdaH`|L?o31mzCMMOw^}6Gp}*cGPdkWp!!fj9sk(ll2zIiI9x(m!Z#)4FT|UW1Q!@&rHc#p7PfklqbhsG`5TO^jF^L@qmX-@zKRADY>W*()(`#6^w=;IP9xHTgMq6GED;7>E#S9WNiB|2eKZ!HJ!qD(`e}qPwt+~b^KgJISyhSv!lv?ba68XFLI3{>}kf^>gaG928Ym{URfadB71USJH9{@PJ;Ya'),'big')
- while n:print(end="ambling poetry"[n%14]);n//=14
- ```
- [Try it online!][TIO-l8r46k1t]
- ---
- In hindsight I have no idea why I thought either of my initial approaches would work.
- [Python 3]: https://docs.python.org/3/
- [TIO-l8r3k4fp]: https://tio.run/##HZBBdsMwCESvMru0655oJFNHFRKqLJrnXN4h3XyG1R8Y57pb/7quMUtfH7fvsoOpOBJFsXEJtLSAq6GLNHTrBUM4MYpGUm@YpTkONcFhM@H0p4O5ioBVUgHH0MiTTyIz04K/XoLTEmRN27FPDsHu/COKshE/jA3VahiqJypUmnU09t3QRN/Z@@bB4x712LPAbPJ8F8z34NsSFW1hTO@C4Rsd0x7smF7ZcFBZ/6lYHIVYElWwokTQzrA8rO9xhYZ9i88kZouRfZYYoSVS2TvP2@d1vQA "Python 3 – Try It Online"
- [TIO-l8r46k1t]: https://tio.run/##FdDZUoJQAADQd79CZEqwxQERJQYkU1nUJNFRbCJALouyw7ig9utUz@ftxOfcjcJWWdppFFRNIwMkUfWCOErzRiVkvDB//pdv85yDDDG7bQtsIwsg9bbaTzm8sFzUtgxBv056UQsLirfpdHbUbiQf3xpbXrb2qxiC7B2V7RHfxwvRE6kTEkAbGCVGi@tyhX1A3H0qbOG4I9t7PzHdjNfbi5m2G2kTLgnWT1wxnr8OVHbVQFBEh0ntyNCiTJ2EhTNNSH44oDvsEFao1bvXv@JgvIEECUoGiA5uiXzMH35MbexIonJ2lQPkH3qmQXbXo4nYurC3va2xjsFTeFcNLsu5bVj9DrZUJIG6cLJEq0YdfaybnlNHK0fX80E1fInTvxMEhBZTMwLT90KnGkcgT8@1z/AOI75QOmw2GYwoy18 "Python 3 – Try It Online"
- [TIO-lmzftgr9]: https://tio.run/##hVpNjuS4sd7rFEJtqhvuHMAwBngYoDe@xnjQoCSmxBRFaviT2SrDR5iNT2DDePBqFg@zm23BeOfwScZfBH8kVTdgVEGMCElkMBiM@ILKdQuTNX/47TfRfmyfnp5Ep2IjXv8pXn9uRC@d1QLtRP9oZykbcR0nYdp@ks5t4JzqwXbCdqJrry6qUIXpmdY6YUa5S6MPwg0Xsa56l2pL8raTwlTZgvfsmfNByv0Bq3S7Cr28GXeV0LcRYxRe/RhVI2bZ4aqFn0nVaPqpS9prLcdJmq1ddVzALtYMubloKe5yoM5cIzC4CD4S8WJNOzqxQvelE05qMtEisx2kiGHLvVehhulaqQfp3txZxJbNUCRvp1Tkq3ReLVDsIGKdC@eg69eGILkTfs1iM0YtXOuluFzVCN5Yo3gKSQ@6tvnZFT3YUNo8XmLO1nFwG1pZe72Sh2T2ofTQFps6EVQfl0svxtd/2MQbCNrBYr5OkOSFrj2eOyrsFmlUMWKWebG0o9RxjC4xMxhaYq/S8kMc5GI3dBjghAFLdugSjuaEVl@47d32YrANJKKnpo9OoZEaF6VpuaTGAnTiZqMTba@CY1aL8Pp3arW1JhuvI@cwo6D7Bn@5qV0wswrvlTVp@CzbYt/T03kdO/LlZPpEku6P4z0fRyxoWj5I3LOvj9c@tK4PLLwZOwndNPaiw@bE2NKNYsEa573aqdEIvKh07iETbS/6EH02GKRqgdk7ZW6CGtdP8ItrWgGwQwkToFVHNlIhSFdH4X2RFWO6PJ6YohxzSyy6MJumyOS@son3YrUh93iQ791ZO7TQXGayahNli5jhaNGJPq8OSfxDygAbaHiIn5IMvjXG9HYezM4TnDlraLW6k6ctNpogFG2S3poY6M4DY2Gp7dJZchCLWKWpdfb2@gvazUuT@8TmQGAo5mGOeoW6d7zhpBiymkRy9w73X/8JfyzbuHPRT7WLOAyTgKsglg/grleh7QW5wME54dyT1dQOclY50IBbpJc59HXUVxd5NfPIkNwRgFq2RCTz4LY9xW14j7BN9iF2kh4mUYFksGksfRFHYUPRK1pdoZUSxwjQU@SGO@Y@9B27EVEnuVKPgOBf/2YmorrYK2pjSxdQRgzqnAWqzEt3V73cpRgh7VcwClPQRARYKq40zAprWOvrC5RreqS2119MnYizHa5@ko@2aIc4rpwVRHmRo0MvQtByywvaC/iMSz7ai4eEMXs5QNKJraxgL5cVshmECdLAQLq9C6fkiNA3tHNcfowCGuBhQTGWLSU3TdnroPREGQGxgKhVC0VDwX1VP0XMvKHBFAfSMmzK6VILKUYTfRFoER3ZJ6f8a4u42zplyV/MIMsNdqV@Uv2MuP3YWVsMNilEkOLY4Az5HBx@6WpeqtKDPxcZeUExdBYNsEdlrto@MCMzvnmIzMOh6@BG5VbWkRkssen3e2ePKUJkh7d6PSYVZF6ECREAKUO2d9yr87az3F8Ck/tMOSY1xRm1RE5E@oQecMUhP6ntfe9BI8fR1kSK761wZAY7ABxc0jqVUa0AFtNvpmH7eSvmgartIDGwa0rgojbZhNN9ecnsg1szFxiCR4Fc2LLe2EcROiM5ftU3nH2xR9zTI2KINiGY7AsUQN12yYACrEOSVHC5w5LD1/IQoGSxl5MyJwwiV1r9PWdAZPwEXywPVy3jQIkB7RqBiBE7cgKhdiu@GF3soFzCtEWNyPjo5EwxsETekWmhxAnP9FuPeKeqOQaxeKiCDX8XL0lx0A9lEK8rMGC3psslP3BXw7PP2Jc59FGwwCAe255eB@QICsu4e4UxgCwh0qpXFmF5t8wAx3WhILjC5WySWXKwTHK0ynTWIjGIQ2ZAlgSfTTvYsepiY3dc@ME@AMdPDollGG2JqInJdBzxj4ZyHRo/54wwxNBPaYLw90EYMgGy7bW9AQptp/FYTCD5sCBZGD3jyWIAFm4iiFMHUtBOM4e1LhKAe/hVZYMUqXc5juXdHa9LLVfE4pBdSOqF/eWglEQIVD2aWJ4BlW@ZcUbKbCSixNjI6OxKQfSQrHbZvluqrK7LLuG55iWqUnalyp0Liypm1M@rcJXPqs357SrVzVIDnEnAl/3jqjpHLuepFiBARd6UPDJ5U6IxTg6DV3WXpfI454QrAuoDYC77O8K8SyGyvnqQ1JU6ZIO0xlcL5zsVBVf7OUOea7ypYpLx37/@b9@MVETkuAH43FmgSEwPe1UJInzMEwVA7xVBmJ6f4rvAVgfLg8finiHniOKw9K7INSiVAqlQtTZaKJNftZq6mtQCF9jEsdLJt2b1ULlLu1gXABGaAwZI0@NrfsqJLQewPF2OWGzZRGaIzcwoRqYemB8VYKjf0D1wNK17it18zYOhTiO0PcZloSAqCuYbt2VV8pKaLJuq809CIYt4Ck@AdAHbfcJs62Oob/ZVBXwZNp40kXEWaB5CqZNpIEpotxDZmrsZj/ULEvIsFGDUWYhYcjTThCSYa38msbqVyAvJrI/9THpSGhzqDReiLpts4idyV1sc8@kDQuIF@Qr4ls9JFKM3OA0BwQa1w4KrGdRpF6qQSl3uV212xos3YG1aJmSuG0wMBHDF3mE6WfRGhye4wls1Pw@jazSrYDQj9Kr2fL@Lc26ogqO1duFp4@7iA5qrwi94LPLO8ZQq55W@l2j6RZi/0d6fmxssMWJbFnR8e/25J6txi1rsBmwDv74R@sg9xVvsIIlGFoFRgDRZ/Vl0Fgszi@tV5aA1i0nNyMuiSS5ziLizuCE25BXHQqxSoXFYgOrLM1wVoJHiJq3ULF7EnBZylqp0g2QxEDQB4WUG1XQEgmpglj6SQhAnbSaF4qmZKcgVBAdmpvgRAXxUJBbQDM1DGJsbJD@Ewz1wzPCcBd0gMm6I1JiDYvWom1w/z3YmNeAwLQ9i9TzZF1R3vkSxGSH4fJKTJbt1s@D0/L5pIdA8akSfABEU8YvdAMN0U9Z1jglxzNj37RLnRlO0IH8ABQ/AIxpRQr0IOr1psNWSD6UjKzYyQDZU4CvC2ioLAEmSAdnuWNmyVAx5Fmx5uuwsq6WxCtYUIVV8x1pM27HAV8x@vGBXo0jFUpfsRFJMX9vUmb2rC11APQ4mJO6En/Trr32Ek@uIgk7H118mFMdA1f//10Zv2GGyWRDCtebzsLyBFj7jcMm1OCK2zvIWJ9ssYpHbic4JYckwVsGRQC/cNwptRmg1PhxEeYMfJft2WSiXYl/GRCFRF18rPFMjxbF0VnxYESKB680myWbgrKD7KODaMkUn@ngTFJDudmcXS0Wo2AUAILA@P6HK6oG2mkWRH0UlT3VuZE22ov622rVZ5ABfa8ilKR83ybcXrtpHtJ/3w1xYkqAPe96ihlGWrLQo6KJLWgT3UvbUojYEsGpHS@df@wnhYjUdJ76JuQuhgAHDlv6oYNvOzJ4LkmBFfgBFUBZbL1ULHpO1dBBql9dfTaJRLPYAvAxSIECKksc4TPBDvf4fLFfOw/bdXUUn792ltX7cRSgCPZkYAaFUe/WccEEMiHQNTmExqHjbSj20RN8DSZH/IO1Yus71fT9nanPYoQVvFs/bPKLSQWuDvQNAB5TbS7reONJO@Z4xW3nMBCR1Gc6zM@Q2N7YWUjwScR4GjNrL@cLlAtTIPiTvN1IuuMDAFL0OSpFItRPqLJ6vAQB5kdjGZjhjTKPk8PKQ4WUm2yS/RX4TxzUzlhLZv35q6FMBLi5Mbf28cKgxEPUXWUqbf/2ESEcpwt4Qglf1GWtgZy0mu@SjUatTZcRIs3xKwKaiUNJY2GFrsjFg8LF@dLHOIoGYHs94AmvFRjaISdIhyyGi2jssWnLCKnp1BcbegWKRsDpkw/PaAFdhK6Nx8CBsxiI9mG8VD/w3CeVT@RPD@VSUJ7UiNRvCrMgixm/6Lt4cZ650KGHR0AkiwMU1LvLNQu3ff0DFewqn9K3mdCKPElJjV65qlDbHlFVpRRddPxKs@0kDwbgqLBNUnGXQzKV6I3qkvHJ8PlDk5Xbjxi5dbS@DuHTAQRBowXsVBFVATdIJF@6rqA2eEgO19eCkaKsj39mwyeF4yaB2sMgLa/Qg4XNUaiD7EI2gjGalkRC0Sx8gJfKXyLF1hRO1dGlWh8JCHWtCSELAXjhKFNB4OlooCru4GIvJbp5o7MQ1DiLiqoUn40VHa8PvX7JZkygVRJk5pKskuaSK9FRZ4058/bn5MXINtm/LfBSJCXiYNzVtQEWW79dKydFZekBSa2g7obtm75wPPr7yMYrlhMiTCbgGz9GH6P2hY6VCfA2/7q0Hk8AjBM1E1c6mSJijcSq/pZbYHJAGk5NamUgnIqdU5pAK8sccJtNJ43EXO/sgG6AMXBo6bj99XvWCzhcCvMVTxeNslZOedNXpmofzjMQKvawEwj0F1byfiKZyLJ28gsu4yNMmaHstsFNTciGJpc7hyxz@65MOaT8c3C9LyCXLIB71heVOUBUuorRtgUUQIMYYMe2vPHjaMoR9ig/0gR11iENIiqiy6VQPRuHquEhOK@klKn1DO0l@eaODQ@R3paglB9EpfhMmG28Ra@LpbLzlVByIWRGu0VqZPxwRQPeKRYaOgQk8@cnFEhk8@cwRV1bBIXx4Nc9qOZqTy8QCqTOXP4BlKyTZ18K51xY9AA/rAguusZ9YyaMwIYfiM8c7QRCKpIGXL4yfJG@PbrP45NNFFngFOPkQOkrBkal9hxNLn7E8cgDipUeGXWrvmIxFKkUAB6rpmuOXC6bZiy2FJtIkoy3PgbgigOK4JD0fhPqVPpvtTphZ3q2F2Q2CRQwFxKH8HvlQhty6J7YkLybzYgSkJcUHIEcfZKOcowQhYjPqsi13fLyTx8jpEcspXKYv62nuROafrHgUKkYsdVqot1GtzVwxPRr/AF7oBCzNH4uPKeDN5@PM7uZi/nDIlwRkrhDAbT0CObAnz2Fz9acOSK@PvZQqXO02CyhdSwaNbHLsv2R6jYxZF6EQ6ZsCv8K391eRsGhESrBI/GleVBOs6YpYjT4ybYRXRKLOAaKIVUP5WfiyAROTfLjQBekE4LuuJBcEafpOs89TjXROnPwF9QZpYMVwXMdg6WzXHm0BlOigud3wUhwBkdOT0fu4GxRZ882GI8RGK3KXCA3ljD4z1XgAZaPLpwx3FZSnD3zqClM0d6tn2jAZfzyQOlAaP0Q4iECnyTB5qrcf4nOh@DtiOo9IqiUJkujxhxBJWJJs4shtElVPRRJbU3b@SHncTUmUtzgzF@CVZdkP4JsHfXI29O3pZDI@Stk/H1e23CIXz@R@5np8gCrQROUyoJxpwlOYPOzjB7nxoz0exj4qoAVFZcZ@2F@esPqan7BmVA2dJuUtDhKA74tTxM@Kf4zUQNVxkYraYOfmi29Cm2R1Dls5S1B5d0jPmeNNtqE0S1psVNAYW9TbgGfGfCcac9rTW3yJzYsaLy9iPH5GplLO99Mon56e6Ndtn1js24@t@MYDgYd3T38yT@8b7vbTw7qB7n1PRHu1rmVC0Sev@qq6svT7y7ff/dB@/Ng@8btPP6Dggp5v@vhd@/Th6b/01Bob6M5Bhx8ox7sgjRw@fUW1b5xEGdHLd3nsD@3zH5/fn4Y5dVZe9tTn8O6o6O/ar470oZ3l9lHDoQfRfv5OS/Pu8zcSmXHAoDFcL//z9P79@@@/@/bb3Psn4T/B/8ib6HeT39ysMu/4Dp66/P4HVAUWy7/g7vUJmc2Ed89/fvPmX57rxDCfD8@sz4fn9@@fmvRG7uP9b7/9Bw "Python 3 – Try It Online"
- [TIO-lmzg5d4n]: https://tio.run/##FY/LbcRQCEVbmZ1nJJRNOqAT3jNjM@Z9gk0sTz9pIt2kEgdvjg666Ar6sc2tfp5nN6nbfTDBp0yQyDCJ4sg7Flfc6EBK4hGwwkgbg0oJuDaozAVqqwKdyaCLhqkXMCkOqzaGtVmCw99RwFe1OmM2qoG2Ixe/4Ux5wZdXxqsZu4QZrR33y/amTzx4v2GsMQMtnASodw03ehNkytSCXy5Bawl4szbB9Pf7k2Ey6gyT0zeBKBWCF8UES1vi0MUTKSiXVqFQnRoU1su9jh5c5/iSaubhw7grZb4POMCQ2OyA4fE4z38 "Python 3 – Try It Online"
- # [Python 3], ~~319~~ 318 bytes
- ```python
- print('riBfig,barBbilBdewBmulBtayBabiu,bael,date,lime,lulo,neem,noni,pear,pili,plum,rimu,sloe,sorb,yuzu,bearBblueBcranBcrowBemu BhackBjuneBlimeBpineBraspBwineBwolfByew Backee,akebi,apple,araza,cacao,caqui,carob,etrog,gấc,grape,guava,ilama,jagua,kokum,kubal,lemon,mango,melon,mundu,musho,nance'.replace('B','berry,'))
- ```
- [Try it online!][TIO-lmzg5d4n]
- ---
- *1 byte saved thanks to [msb's comment](https://codegolf.codidact.com/comments/thread/8512#comment-21966) which made me realise I was sorting the fruit by string length (which measures characters instead of bytes, making fruits with diacritics seem shorter than they really are).*
- ---
- This works by representing `berry,` (including the comma) as `B`. This means every fruit that ends in "berry" can effectively save 5 bytes. It turns out there are enough berries to make the 22 byte cost of `replace` worthwhile.
- This is the 55 shortest fruits measuring length after substituting "berry," with "B". I generated the code using this code: [Try it online!][TIO-lmzftgr9]
- ## My initial failed attempts
- Before I found this approach I tried shortening the other two Python 3 answers, but in both cases my misguided efforts only made the code longer...
- ### Trying to shorten [steffan153's answer](https://codegolf.codidact.com/posts/287088/287094#answer-287094)
- I noticed that some of the fruits had diacritics, which makes them longer in bytes than they appear, so instead of just using the 55 shortest fruit by characters, I used the 55 shortest fruit after throwing away any fruit with diacritics, like gấc and açaí. However, since we've already used up all of the fruit of length 5 bytes or less, each diacritic fruit removed brings in another 6 byte fruit, so the total length of the code went up by a byte:
- ```python
- print('fig abiu bael date lime lulo neem noni pear pili plum rimu sloe sorb yuzu ackee akebi apple araza cacao caqui carob etrog grape guava ilama jagua kokum kubal lemon mango melon mundu musho nance ooray peach pequi pluot prune pudau rowan rukam salak salal tapia terap tilap toyon wongi almond babaco bacuri banana bignay')
- ```
- [Try it online!][TIO-l8r3k4fp]
- ### Trying to shorten [Moshi's answer](https://codegolf.codidact.com/posts/287088/287095#answer-287095)
- I thought I could save some bytes by using fewer distinct characters in the list of fruits, since all of these need to be listed in the `while` loop that extracts the data. So I repeatedly found the letter present in fewest fruits, and discarded all fruits containing that letter, stopping short of ending up with fewer than 55 fruits remaining. This left me with only 14 distinct characters, down from 16 in the original code. However, the 2 bytes this saved were overwhelmed by the fact that the new list of 55 fruits contained longer fruits, since I'd discarded some of the shorter ones, leaving the code 14 bytes longer:
- ```python
- from base64 import*
- n=int.from_bytes(b85decode('5YBr@2zdh)fdaH`|L?o31mzCMMOw^}6Gp}*cGPdkWp!!fj9sk(ll2zIiI9x(m!Z#)4FT|UW1Q!@&rHc#p7PfklqbhsG`5TO^jF^L@qmX-@zKRADY>W*()(`#6^w=;IP9xHTgMq6GED;7>E#S9WNiB|2eKZ!HJ!qD(`e}qPwt+~b^KgJISyhSv!lv?ba68XFLI3{>}kf^>gaG928Ym{URfadB71USJH9{@PJ;Ya'),'big')
- while n:print(end="ambling poetry"[n%14]);n//=14
- ```
- [Try it online!][TIO-l8r46k1t]
- ---
- In hindsight I have no idea why I thought either of my initial approaches would work.
- [Python 3]: https://docs.python.org/3/
- [TIO-l8r3k4fp]: https://tio.run/##HZBBdsMwCESvMru0655oJFNHFRKqLJrnXN4h3XyG1R8Y57pb/7quMUtfH7fvsoOpOBJFsXEJtLSAq6GLNHTrBUM4MYpGUm@YpTkONcFhM@H0p4O5ioBVUgHH0MiTTyIz04K/XoLTEmRN27FPDsHu/COKshE/jA3VahiqJypUmnU09t3QRN/Z@@bB4x712LPAbPJ8F8z34NsSFW1hTO@C4Rsd0x7smF7ZcFBZ/6lYHIVYElWwokTQzrA8rO9xhYZ9i88kZouRfZYYoSVS2TvP2@d1vQA "Python 3 – Try It Online"
- [TIO-l8r46k1t]: https://tio.run/##FdDZUoJQAADQd79CZEqwxQERJQYkU1nUJNFRbCJALouyw7ig9utUz@ftxOfcjcJWWdppFFRNIwMkUfWCOErzRiVkvDB//pdv85yDDDG7bQtsIwsg9bbaTzm8sFzUtgxBv056UQsLirfpdHbUbiQf3xpbXrb2qxiC7B2V7RHfxwvRE6kTEkAbGCVGi@tyhX1A3H0qbOG4I9t7PzHdjNfbi5m2G2kTLgnWT1wxnr8OVHbVQFBEh0ntyNCiTJ2EhTNNSH44oDvsEFao1bvXv@JgvIEECUoGiA5uiXzMH35MbexIonJ2lQPkH3qmQXbXo4nYurC3va2xjsFTeFcNLsu5bVj9DrZUJIG6cLJEq0YdfaybnlNHK0fX80E1fInTvxMEhBZTMwLT90KnGkcgT8@1z/AOI75QOmw2GYwoy18 "Python 3 – Try It Online"
- [TIO-lmzftgr9]: https://tio.run/##hVpNjuS4sd7rFEJtqhvuHMAwBngYoDe@xnjQoCSmxBRFaviT2SrDR5iNT2DDePBqFg@zm23BeOfwScZfBH8kVTdgVEGMCElkMBiM@ILKdQuTNX/47TfRfmyfnp5Ep2IjXv8pXn9uRC@d1QLtRP9oZykbcR0nYdp@ks5t4JzqwXbCdqJrry6qUIXpmdY6YUa5S6MPwg0Xsa56l2pL8raTwlTZgvfsmfNByv0Bq3S7Cr28GXeV0LcRYxRe/RhVI2bZ4aqFn0nVaPqpS9prLcdJmq1ddVzALtYMubloKe5yoM5cIzC4CD4S8WJNOzqxQvelE05qMtEisx2kiGHLvVehhulaqQfp3txZxJbNUCRvp1Tkq3ReLVDsIGKdC@eg69eGILkTfs1iM0YtXOuluFzVCN5Yo3gKSQ@6tvnZFT3YUNo8XmLO1nFwG1pZe72Sh2T2ofTQFps6EVQfl0svxtd/2MQbCNrBYr5OkOSFrj2eOyrsFmlUMWKWebG0o9RxjC4xMxhaYq/S8kMc5GI3dBjghAFLdugSjuaEVl@47d32YrANJKKnpo9OoZEaF6VpuaTGAnTiZqMTba@CY1aL8Pp3arW1JhuvI@cwo6D7Bn@5qV0wswrvlTVp@CzbYt/T03kdO/LlZPpEku6P4z0fRyxoWj5I3LOvj9c@tK4PLLwZOwndNPaiw@bE2NKNYsEa573aqdEIvKh07iETbS/6EH02GKRqgdk7ZW6CGtdP8ItrWgGwQwkToFVHNlIhSFdH4X2RFWO6PJ6YohxzSyy6MJumyOS@son3YrUh93iQ791ZO7TQXGayahNli5jhaNGJPq8OSfxDygAbaHiIn5IMvjXG9HYezM4TnDlraLW6k6ctNpogFG2S3poY6M4DY2Gp7dJZchCLWKWpdfb2@gvazUuT@8TmQGAo5mGOeoW6d7zhpBiymkRy9w73X/8JfyzbuHPRT7WLOAyTgKsglg/grleh7QW5wME54dyT1dQOclY50IBbpJc59HXUVxd5NfPIkNwRgFq2RCTz4LY9xW14j7BN9iF2kh4mUYFksGksfRFHYUPRK1pdoZUSxwjQU@SGO@Y@9B27EVEnuVKPgOBf/2YmorrYK2pjSxdQRgzqnAWqzEt3V73cpRgh7VcwClPQRARYKq40zAprWOvrC5RreqS2119MnYizHa5@ko@2aIc4rpwVRHmRo0MvQtByywvaC/iMSz7ai4eEMXs5QNKJraxgL5cVshmECdLAQLq9C6fkiNA3tHNcfowCGuBhQTGWLSU3TdnroPREGQGxgKhVC0VDwX1VP0XMvKHBFAfSMmzK6VILKUYTfRFoER3ZJ6f8a4u42zplyV/MIMsNdqV@Uv2MuP3YWVsMNilEkOLY4Az5HBx@6WpeqtKDPxcZeUExdBYNsEdlrto@MCMzvnmIzMOh6@BG5VbWkRkssen3e2ePKUJkh7d6PSYVZF6ECREAKUO2d9yr87az3F8Ck/tMOSY1xRm1RE5E@oQecMUhP6ntfe9BI8fR1kSK761wZAY7ABxc0jqVUa0AFtNvpmH7eSvmgartIDGwa0rgojbZhNN9ecnsg1szFxiCR4Fc2LLe2EcROiM5ftU3nH2xR9zTI2KINiGY7AsUQN12yYACrEOSVHC5w5LD1/IQoGSxl5MyJwwiV1r9PWdAZPwEXywPVy3jQIkB7RqBiBE7cgKhdiu@GF3soFzCtEWNyPjo5EwxsETekWmhxAnP9FuPeKeqOQaxeKiCDX8XL0lx0A9lEK8rMGC3psslP3BXw7PP2Jc59FGwwCAe255eB@QICsu4e4UxgCwh0qpXFmF5t8wAx3WhILjC5WySWXKwTHK0ynTWIjGIQ2ZAlgSfTTvYsepiY3dc@ME@AMdPDollGG2JqInJdBzxj4ZyHRo/54wwxNBPaYLw90EYMgGy7bW9AQptp/FYTCD5sCBZGD3jyWIAFm4iiFMHUtBOM4e1LhKAe/hVZYMUqXc5juXdHa9LLVfE4pBdSOqF/eWglEQIVD2aWJ4BlW@ZcUbKbCSixNjI6OxKQfSQrHbZvluqrK7LLuG55iWqUnalyp0Liypm1M@rcJXPqs357SrVzVIDnEnAl/3jqjpHLuepFiBARd6UPDJ5U6IxTg6DV3WXpfI454QrAuoDYC77O8K8SyGyvnqQ1JU6ZIO0xlcL5zsVBVf7OUOea7ypYpLx37/@b9@MVETkuAH43FmgSEwPe1UJInzMEwVA7xVBmJ6f4rvAVgfLg8finiHniOKw9K7INSiVAqlQtTZaKJNftZq6mtQCF9jEsdLJt2b1ULlLu1gXABGaAwZI0@NrfsqJLQewPF2OWGzZRGaIzcwoRqYemB8VYKjf0D1wNK17it18zYOhTiO0PcZloSAqCuYbt2VV8pKaLJuq809CIYt4Ck@AdAHbfcJs62Oob/ZVBXwZNp40kXEWaB5CqZNpIEpotxDZmrsZj/ULEvIsFGDUWYhYcjTThCSYa38msbqVyAvJrI/9THpSGhzqDReiLpts4idyV1sc8@kDQuIF@Qr4ls9JFKM3OA0BwQa1w4KrGdRpF6qQSl3uV212xos3YG1aJmSuG0wMBHDF3mE6WfRGhye4wls1Pw@jazSrYDQj9Kr2fL@Lc26ogqO1duFp4@7iA5qrwi94LPLO8ZQq55W@l2j6RZi/0d6fmxssMWJbFnR8e/25J6txi1rsBmwDv74R@sg9xVvsIIlGFoFRgDRZ/Vl0Fgszi@tV5aA1i0nNyMuiSS5ziLizuCE25BXHQqxSoXFYgOrLM1wVoJHiJq3ULF7EnBZylqp0g2QxEDQB4WUG1XQEgmpglj6SQhAnbSaF4qmZKcgVBAdmpvgRAXxUJBbQDM1DGJsbJD@Ewz1wzPCcBd0gMm6I1JiDYvWom1w/z3YmNeAwLQ9i9TzZF1R3vkSxGSH4fJKTJbt1s@D0/L5pIdA8akSfABEU8YvdAMN0U9Z1jglxzNj37RLnRlO0IH8ABQ/AIxpRQr0IOr1psNWSD6UjKzYyQDZU4CvC2ioLAEmSAdnuWNmyVAx5Fmx5uuwsq6WxCtYUIVV8x1pM27HAV8x@vGBXo0jFUpfsRFJMX9vUmb2rC11APQ4mJO6En/Trr32Ek@uIgk7H118mFMdA1f//10Zv2GGyWRDCtebzsLyBFj7jcMm1OCK2zvIWJ9ssYpHbic4JYckwVsGRQC/cNwptRmg1PhxEeYMfJft2WSiXYl/GRCFRF18rPFMjxbF0VnxYESKB680myWbgrKD7KODaMkUn@ngTFJDudmcXS0Wo2AUAILA@P6HK6oG2mkWRH0UlT3VuZE22ov622rVZ5ABfa8ilKR83ybcXrtpHtJ/3w1xYkqAPe96ihlGWrLQo6KJLWgT3UvbUojYEsGpHS@df@wnhYjUdJ76JuQuhgAHDlv6oYNvOzJ4LkmBFfgBFUBZbL1ULHpO1dBBql9dfTaJRLPYAvAxSIECKksc4TPBDvf4fLFfOw/bdXUUn792ltX7cRSgCPZkYAaFUe/WccEEMiHQNTmExqHjbSj20RN8DSZH/IO1Yus71fT9nanPYoQVvFs/bPKLSQWuDvQNAB5TbS7reONJO@Z4xW3nMBCR1Gc6zM@Q2N7YWUjwScR4GjNrL@cLlAtTIPiTvN1IuuMDAFL0OSpFItRPqLJ6vAQB5kdjGZjhjTKPk8PKQ4WUm2yS/RX4TxzUzlhLZv35q6FMBLi5Mbf28cKgxEPUXWUqbf/2ESEcpwt4Qglf1GWtgZy0mu@SjUatTZcRIs3xKwKaiUNJY2GFrsjFg8LF@dLHOIoGYHs94AmvFRjaISdIhyyGi2jssWnLCKnp1BcbegWKRsDpkw/PaAFdhK6Nx8CBsxiI9mG8VD/w3CeVT@RPD@VSUJ7UiNRvCrMgixm/6Lt4cZ650KGHR0AkiwMU1LvLNQu3ff0DFewqn9K3mdCKPElJjV65qlDbHlFVpRRddPxKs@0kDwbgqLBNUnGXQzKV6I3qkvHJ8PlDk5Xbjxi5dbS@DuHTAQRBowXsVBFVATdIJF@6rqA2eEgO19eCkaKsj39mwyeF4yaB2sMgLa/Qg4XNUaiD7EI2gjGalkRC0Sx8gJfKXyLF1hRO1dGlWh8JCHWtCSELAXjhKFNB4OlooCru4GIvJbp5o7MQ1DiLiqoUn40VHa8PvX7JZkygVRJk5pKskuaSK9FRZ4058/bn5MXINtm/LfBSJCXiYNzVtQEWW79dKydFZekBSa2g7obtm75wPPr7yMYrlhMiTCbgGz9GH6P2hY6VCfA2/7q0Hk8AjBM1E1c6mSJijcSq/pZbYHJAGk5NamUgnIqdU5pAK8sccJtNJ43EXO/sgG6AMXBo6bj99XvWCzhcCvMVTxeNslZOedNXpmofzjMQKvawEwj0F1byfiKZyLJ28gsu4yNMmaHstsFNTciGJpc7hyxz@65MOaT8c3C9LyCXLIB71heVOUBUuorRtgUUQIMYYMe2vPHjaMoR9ig/0gR11iENIiqiy6VQPRuHquEhOK@klKn1DO0l@eaODQ@R3paglB9EpfhMmG28Ra@LpbLzlVByIWRGu0VqZPxwRQPeKRYaOgQk8@cnFEhk8@cwRV1bBIXx4Nc9qOZqTy8QCqTOXP4BlKyTZ18K51xY9AA/rAguusZ9YyaMwIYfiM8c7QRCKpIGXL4yfJG@PbrP45NNFFngFOPkQOkrBkal9hxNLn7E8cgDipUeGXWrvmIxFKkUAB6rpmuOXC6bZiy2FJtIkoy3PgbgigOK4JD0fhPqVPpvtTphZ3q2F2Q2CRQwFxKH8HvlQhty6J7YkLybzYgSkJcUHIEcfZKOcowQhYjPqsi13fLyTx8jpEcspXKYv62nuROafrHgUKkYsdVqot1GtzVwxPRr/AF7oBCzNH4uPKeDN5@PM7uZi/nDIlwRkrhDAbT0CObAnz2Fz9acOSK@PvZQqXO02CyhdSwaNbHLsv2R6jYxZF6EQ6ZsCv8K391eRsGhESrBI/GleVBOs6YpYjT4ybYRXRKLOAaKIVUP5WfiyAROTfLjQBekE4LuuJBcEafpOs89TjXROnPwF9QZpYMVwXMdg6WzXHm0BlOigud3wUhwBkdOT0fu4GxRZ882GI8RGK3KXCA3ljD4z1XgAZaPLpwx3FZSnD3zqClM0d6tn2jAZfzyQOlAaP0Q4iECnyTB5qrcf4nOh@DtiOo9IqiUJkujxhxBJWJJs4shtElVPRRJbU3b@SHncTUmUtzgzF@CVZdkP4JsHfXI29O3pZDI@Stk/H1e23CIXz@R@5np8gCrQROUyoJxpwlOYPOzjB7nxoz0exj4qoAVFZcZ@2F@esPqan7BmVA2dJuUtDhKA74tTxM@Kf4zUQNVxkYraYOfmi29Cm2R1Dls5S1B5d0jPmeNNtqE0S1psVNAYW9TbgGfGfCcac9rTW3yJzYsaLy9iPH5GplLO99Mon56e6Ndtn1js24@t@MYDgYd3T38yT@8b7vbTw7qB7n1PRHu1rmVC0Sev@qq6svT7y7ff/dB@/Ng@8btPP6Dggp5v@vhd@/Th6b/01Bob6M5Bhx8ox7sgjRw@fUW1b5xEGdHLd3nsD@3zH5/fn4Y5dVZe9tTn8O6o6O/ar470oZ3l9lHDoQfRfv5OS/Pu8zcSmXHAoDFcL//z9P79@@@/@/bb3Psn4T/B/8ib6HeT39ysMu/4Dp66/P4HVAUWy7/g7vUJmc2Ed89/fvPmX57rxDCfD8@sz4fn9@@fmvRG7uP9b7/9Bw "Python 3 – Try It Online"
- [TIO-lmzg5d4n]: https://tio.run/##FY/LbcRQCEVbmZ1nJJRNOqAT3jNjM@Z9gk0sTz9pIt2kEgdvjg666Ar6sc2tfp5nN6nbfTDBp0yQyDCJ4sg7Flfc6EBK4hGwwkgbg0oJuDaozAVqqwKdyaCLhqkXMCkOqzaGtVmCw99RwFe1OmM2qoG2Ixe/4Ux5wZdXxqsZu4QZrR33y/amTzx4v2GsMQMtnASodw03ehNkytSCXy5Bawl4szbB9Pf7k2Ey6gyT0zeBKBWCF8UES1vi0MUTKSiXVqFQnRoU1su9jh5c5/iSaubhw7grZb4POMCQ2OyA4fE4z38 "Python 3 – Try It Online"
#2: Post edited
# [Python 3], 319 bytes- ```python
print('riBfig,gấc,barBbilBdewBmulBtayBabiu,açaí,bael,date,lime,lulo,neem,noni,pear,pili,plum,rimu,sloe,sorb,yuzu,bearBblueBcranBcrowBemu BhackBjuneBlimeBpineBraspBwineBwolfByew Backee,akebi,apple,araza,cacao,caqui,carob,etrog,grape,guava,ilama,jagua,kokum,kubal,lemon,mango,melon,mundu,musho'.replace('B','berry,'))- ```
[Try it online!][TIO-l8r2su8j]- This works by representing `berry,` (including the comma) as `B`. This means every fruit that ends in "berry" can effectively save 5 bytes. It turns out there are enough berries to make the 22 byte cost of `replace` worthwhile.
This is the 55 shortest fruits measuring length after substituting "berry," with "B". I generated the code using this code: [Try it online!][TIO-l8r5md6s][Python 3]: https://docs.python.org/3/- ## My initial failed attempts
- Before I found this approach I tried shortening the other two Python 3 answers, but in both cases my misguided efforts only made the code longer...
- ### Trying to shorten [steffan153's answer](https://codegolf.codidact.com/posts/287088/287094#answer-287094)
- I noticed that some of the fruits had diacritics, which makes them longer in bytes than they appear, so instead of just using the 55 shortest fruit by characters, I used the 55 shortest fruit after throwing away any fruit with diacritics, like gấc and açaí. However, since we've already used up all of the fruit of length 5 bytes or less, each diacritic fruit removed brings in another 6 byte fruit, so the total length of the code went up by a byte:
- ```python
- print('fig abiu bael date lime lulo neem noni pear pili plum rimu sloe sorb yuzu ackee akebi apple araza cacao caqui carob etrog grape guava ilama jagua kokum kubal lemon mango melon mundu musho nance ooray peach pequi pluot prune pudau rowan rukam salak salal tapia terap tilap toyon wongi almond babaco bacuri banana bignay')
- ```
- [Try it online!][TIO-l8r3k4fp]
- ### Trying to shorten [Moshi's answer](https://codegolf.codidact.com/posts/287088/287095#answer-287095)
- I thought I could save some bytes by using fewer distinct characters in the list of fruits, since all of these need to be listed in the `while` loop that extracts the data. So I repeatedly found the letter present in fewest fruits, and discarded all fruits containing that letter, stopping short of ending up with fewer than 55 fruits remaining. This left me with only 14 distinct characters, down from 16 in the original code. However, the 2 bytes this saved were overwhelmed by the fact that the new list of 55 fruits contained longer fruits, since I'd discarded some of the shorter ones, leaving the code 14 bytes longer:
- ```python
- from base64 import*
- n=int.from_bytes(b85decode('5YBr@2zdh)fdaH`|L?o31mzCMMOw^}6Gp}*cGPdkWp!!fj9sk(ll2zIiI9x(m!Z#)4FT|UW1Q!@&rHc#p7PfklqbhsG`5TO^jF^L@qmX-@zKRADY>W*()(`#6^w=;IP9xHTgMq6GED;7>E#S9WNiB|2eKZ!HJ!qD(`e}qPwt+~b^KgJISyhSv!lv?ba68XFLI3{>}kf^>gaG928Ym{URfadB71USJH9{@PJ;Ya'),'big')
- while n:print(end="ambling poetry"[n%14]);n//=14
- ```
- [Try it online!][TIO-l8r46k1t]
- ---
- In hindsight I have no idea why I thought either of my initial approaches would work.
- [Python 3]: https://docs.python.org/3/
[TIO-l8r2su8j]: https://tio.run/##FY/NbcMwDEZXyc0JQPTSDbgJZTO2YkpUabOGs0/RUxfoNZN0Epe@PDziI/jT9nXS@n4czXJdr51lvOcRxr/frx4SGaYsOPCGxQVX2pFSdqDXN71@ImeBgVYGySXgolCZC1StGRqTQcsSJl7AcnFYRBkWtQS7Px0SnxvEGXujGtANufgFJ@pnfHhlPCdjy2FGS8PttE3ljjtvF4w2ZqCZUwZqTcKNngQ99aTBD89B0wS8msZfRo1hdPokyEKF4EFRwaxznDh7IgHhohUK1VGhsJzudfDgMmn3ZtyEer522EGX2GyH7nY7jn8 "Python 3 – Try It Online"- [TIO-l8r3k4fp]: https://tio.run/##HZBBdsMwCESvMru0655oJFNHFRKqLJrnXN4h3XyG1R8Y57pb/7quMUtfH7fvsoOpOBJFsXEJtLSAq6GLNHTrBUM4MYpGUm@YpTkONcFhM@H0p4O5ioBVUgHH0MiTTyIz04K/XoLTEmRN27FPDsHu/COKshE/jA3VahiqJypUmnU09t3QRN/Z@@bB4x712LPAbPJ8F8z34NsSFW1hTO@C4Rsd0x7smF7ZcFBZ/6lYHIVYElWwokTQzrA8rO9xhYZ9i88kZouRfZYYoSVS2TvP2@d1vQA "Python 3 – Try It Online"
- [TIO-l8r46k1t]: https://tio.run/##FdDZUoJQAADQd79CZEqwxQERJQYkU1nUJNFRbCJALouyw7ig9utUz@ftxOfcjcJWWdppFFRNIwMkUfWCOErzRiVkvDB//pdv85yDDDG7bQtsIwsg9bbaTzm8sFzUtgxBv056UQsLirfpdHbUbiQf3xpbXrb2qxiC7B2V7RHfxwvRE6kTEkAbGCVGi@tyhX1A3H0qbOG4I9t7PzHdjNfbi5m2G2kTLgnWT1wxnr8OVHbVQFBEh0ntyNCiTJ2EhTNNSH44oDvsEFao1bvXv@JgvIEECUoGiA5uiXzMH35MbexIonJ2lQPkH3qmQXbXo4nYurC3va2xjsFTeFcNLsu5bVj9DrZUJIG6cLJEq0YdfaybnlNHK0fX80E1fInTvxMEhBZTMwLT90KnGkcgT8@1z/AOI75QOmw2GYwoy18 "Python 3 – Try It Online"
[TIO-l8r5md6s]: https://tio.run/##hVpNjuW4Dd77FEZtqhvpN0AQzCZAb3KNyaAh23q2nmXJI1nvtSvIEWaTEyQIgqxmEcxutoUg58hJJh@pH8vVDQRVsEjaliiKIj/Kb923yZrf/fqraD@2T09PolOhEa//FK8/NaKXzmqBdqJ/tLOUjbiOkzBtP0nndnBO9WA7YTvRtVcX1FaE8ZnWOmFGeUiD34QbLmJd9SHVluRtJ4UpsgXv2TPnNymPB6zS7Sr08mbcVULfRoxBePVDUI2YZYerFn4mVYPppy5qr7UcJ2n2dtVhAbtYM6TmoqW4y4E6c43A4GLzgYgXa9rRiRW6L51wUpOJFpnsIEXY9tR7EWqYrpV6kO7NnUXsyQxZ8nZKWb5K59UCxSoR65w5B12/NgTJnfBrEpsxaOFaL8XlqkbwxhrFU4h60LVNz67owW65TeNF5mwdB7ehlbXXK3lIYh9KD222qROb6sNy6cX4@ncbeQNBO1jM1wmSvNC1x3O1wm6RRmUjJpkXSztKHcbgIjODoSX2Ki4/xJtc7I4ONzjhhiWruoSjOaHVF257t70YbAOJ6Knpg1NopMZFaVouqbEAnbjZ4ETbq80xq8X2@jdqtbUmGa8j5zCjoPsGf6kpXTCzCu@VNXH4JNtD39PTaR078uVo@kiS7o/6ng8jFjQuHyTu2ZfHSx9alwcW3oydhG4ae9Fhc2Js6UaxYI3TXu3UaAReVDr1kIi2F/0WfDIYpGqB2TtlboIa10/wi2tcAbBDDhOgVUc2UtsmXRmF90VSjOn8eGSycswtIevCbJwik8fKRt6L1W6px0p@dGft0EJzmciiTZAtYoajRSf6vDok8Q8pN9hAw0P8FGXwrTHEt9Ngdp7gzElDq9WdPG2xwWxC0SbprQkb3XlgLCy1XTpLDmIRqzS1zt5ef0a7e2lSn9gcCAzZPMxRr1D3jjecFENSk0ju3uH@6z/hj3kbdy74qXQRhmEScBXE8gHc9Sq0vSAXODgnnHuymtpBzioFGnCL9DKFvo766gKvZhoZkjsCUMuWCGQe3LanuA3vEbZJPsRO0sMkaiMZbBpyX8RR2FD0ilZXaKVEHQF6itxwx9SHvmM3IupEV@oREPzrX81EVBd6RW1o6QLKiEGds0CReenuqpeHFCPE/QpGYQqaiA2WCisNs8Ia1vryAuWaHqnt9WdTJuJsh6uf5KPN2iGOK2cFUV6k6NCLbdNyTwvaC/iMiz7ai4eEMXs5QNKJPa9gL5cVshmE2aSBgXR7F07JEaFvaOew/BAENMDDgmIsW0rumrJXpfREGQGxgKhVC0VDwX1VPwXMvKHBFAfSPGzM6VILKUYTfBZoERzZJ6X8a4u42zplyV/MIPMNdqV@Uv2MuP04WJsNNilEkOzY4Az5HBx@6UpeKtLKn7OMvCAbOokG2KMwV20fmJEZ3zxE5uHQVblRvpV0ZAZLbPrj3tljshDZ4a1ej0ltMi3ChAiAlCHbO@6VedtZHi@BSX3GHBOb7IxaIicifUIPuOKQntT2fvSgkeNoayLF91Y4MoMdAA4ucZ3yqFYAi@k307D9vGfzQNV2kBjYNTlwURttwuk@v2SOwa2ZMwzBo0AubFlv7CMLnZEcv8obzr7YGvf0iBiijQgm@QIFULdfEqAA65AkFVyuWnL4WhoClMz2clKmhEHkSqt/5AyIjJ/gi/nhomUYKDGgXQMQMWJHSiDU7tkXgwsdlIuYNqsRGB@dnClsLJF3ZFooccIz/d4j3qlijkEsHqpgw9/FS1Qc9EMZxOsCDNit6XJJD9zV8OwT9mUOfWQsMIjHfqTXATmCwjLuXmEMIEuItOqVRVg@LDPAcd2WEVzmUjZJLDlYIjlaJTppERnEITMgS4JPph3sWHSxoasXfrAPwPGTQ2IZRpsjamQSHUb8o6Fch8bPKSMMYeunOEH4@yAMmQDZ9treAIX203gsJpBcLUgSBs94MhuAhbvYxKkDKWinmWqtswTgHn5V2E2K2Lscx/zugdelliti8ZZcSOqF/aVSSiIEqh5NyM@ASrfMOCNlNhJRYmxkcHalIFolq0N27JYiK@tySHiuaYmKlF2pcOfCoogZ9fMqXOWzalN@u0p1s9QAZxLwZf@4qs6Ry3mqBQhQkTdFj4zeFGmMk8LgVd1lrjzOOeGKgPoAmEv@jjDvYogsr1aSslJVNohrfLVwvlNRcLWfE@S5hpvKJhn/@8s/@makIiLFDcDnzgJFYnrYq0oQ4UOaKAB6rwjC9PwU3wW2qiwPHot7hpwjisPcuyLXoFQKpELV2mihTHrVaupqUgtcYBd1pZNuzeqhUpd2sW4DRGgqDBCnx9f0lBN7CmBpuhyx2LKRTBCbmVGMTD0wPyrAUL@he@BoWvcYu/maBkOdRmh7DMtCQVRkzDfuy6rkJTZJNhXnn4RCFvEUngDpNmz3CbMtj6G@OVYV8GXYedJEhlmgeQilTqaBKKLdTCRrHmas6xck5FkowKizELGkNtOEJJhqfyaxuoVIC8msD/1MelIaHMoNtwWdN9nET6Su9jCm0weExAvyFfAtn5MoRm9wGgKCDWqHBVczqNMuVFssdblftdsZL96AtWmZkLluMDEQwBV7h@lo0RsdnuAKb9X8PIyu0ayC0YzQqzry/SFOuaEIamsdwtPGPcQVmivCL3gs8sHxlArnlb7naPpFmL/R3p@bGywxYltmdHx7/aknq3GLWuwGbAO/vhH6SD2FW@ggCUZmgVGANEn9WXQWCzOL61WloDWLSc3Iy6KJLlNF3FncEBvSimMhVqnQOCxA8eUZrgrQSHGTVmoWL2KOCzlLlbtBshgImoDwMoFqOgJBNTBLH0ghiKM2k0Lx1MwU5DKCAzNT/AgAPioQC2iG5iGMTQ2SH8LhEThmeM6CbhAZd0RqzEGxetRNqp9nO5MacJiWB7F6nuwLqjufo9iMEHw@yUmSw7pJcHr@2LQQaB41oE@ACIr42W6AYbrJ6zqHiDhm7Pt2CXOjKVqQP4CCB@ARjSihXgSd3jTYatGH4pEVGxkgGyrwFWFtlRmARMmAbFdXtiwVQ5oFW54uB8tqaayCNVlIFV9di2k7ZviK2Y8X7GoUqVjqnJ1IiulrGzuzd3WhC6hHZULiTvhJv/7SBzi5DijodHj9eUJxDFT9n780escOk82CEK41n4elDbTwGYeLrsURsXWWtzjZZhGL3E90SghLgrEKjgR64b5RaDNCK/GhEqUNXkuO7bJQLsW@DJFCos6@lnmmRopj8ay4WhEigevNLslm4Kyg@yjg2jxFJ/pwExSQ7vZgF0tFqDgEACCwPj@h8uqBtppFgR9FJU91bmBN9qz@vtq1WeQAX2vIpSkfN9G3F67aR7Sfj8NcWJKgD3veooZR5qy0KOiic1oE95L31KJ2BLBiR0vnX8cJ4WI1HSe@ibkLoYABw@b@qGDbz8yRC6JgRX4ARVAWWy9WCx6TtXQQapfXX0ykUSz2ALwMUiBAipJ1HCb4oV7/Bcvl87BjdxfRyXsPaakfDxGKQE8mRkDI1V45J1wQAwJdN6ewGFS87bkeWoLvgaTIf5B2LF3n8r6fE7U77NCMN7Pn7R5RqdLaYO8A0AHl9pKuN460U7pnzJ4fMxuSutzOszPkNje2FlI8EnEaBow6yvnMpQLUyH6L3m@kXHCBgSl6VUqRSLUT6iyerwEAeZHYxmY4Y0yj5PDykNvLTLaJfov8Juo1M5YS2b9/bOhTAS5um9ryeaGqMRD1F5lLm3//iEhHKcLeEIJX9RlrYGctJruko1GrY2XESDN/SsCmolDSWNhhb5IxYPCxfHSxziKBmB7PeAJr2UZ2E5OkQ5Yqoto7LJpzwip6dQXGPoBilrA6ZMPz2gBXYSujcfAgbMYsrcy3igf@m4jyqfwJ2/lUlCe1IjUbwqzIIsbv@i7eHGeudChh0dAJIsDFNSzyzUId339AhXsMp/St5nQijxJSY1euapQ2xZRVaUUXXT4SrMdJA8G4IswTVJxl0My5eiN6pLxSP79R5OV258YuXWkvg7h0wEEQaMF7FQRVQE3UCRfuK6sNnhIDteXgJGurA9/ZscnheNGgdrDIC2vwIOFzVGog@xCNoIxmpZEQtHMfICXyl0ixdYUTtXRpVofCQtU1ISTbhr1QSxTQeDxayAq7sBiLye6eaOzENQwi4KqFJ@MFR2vD71@SWaMoFkSJqdJVlFxiRXqqrHEnvP7U/BC4Bju2ZTqKxAQ8zBubdkNFlu6XSsnRWfqGpNbQdkJ3zdE5H3x85WMUywmRRxNwDZ6iD9HHQ3WlQnwJv@6tB5PAIwTNRJXOpkCYo3EqvaWW0FRIg8lJrUzEE5FTKnNIBeljDpPxpLHexc4@yAYoA5eGjttPn1e9oPOFDd7iqeJxtshJT7rqeE3DeUZimV5WAuGegmraT0RTORZPXsElXORpE7S9FtipMbmQxFLn8GUO/@VJh7S/Ve6XJOSSeRCP@sJyJ6gKF5HbNsMiCBBjjJiOVx48bbltxxQf6AM7qopDSIqosulUD0bh6jhLTivpJSp9QztJfnmjg0Okd6UoJQfRMX4TJhtvAWvi6Wy85VS8EbMiXKO1Mn04IoDuFYsMHQMTePKTCzkyePKZGlcWQRU@vJpntdTm5DIxQ@rEpQ9gyQpR9rVw7rVFD8DDOsOCa@gnVrIWRuSQfaa@swlCkTTw8oXxo@Tt0W0Sn3w6yzZeAU4@hI5icGTq2OHE0mcsjxyAeOmRYZfSOyZjkUoRwIFquqb@csE0e7Gl0ESaJLTlORAXBJAdl6Tng1C/0mezwwkTy7s1M4dBsIhbBnEov0c@lCG37onNyYvJtBgb0pLiA5DaB9ko5yhBiNiMOm/LAx8fZB05PWI5hcv4ZT3Oncj0kxWPQsWIpUwL9TaqtZkrpkfjH8ALnYCl@WNxnQLefD5O7GEu5qtDviggc20buL1HIAf25DnsrvzUAen1cZRSmSvdJgGla8mgkU2O/RdNr5ExyyJkIn5T4Ff49vEqEhaNSAkWiT/Oi2qCNV4Rq9FHoo3wikjUOUAUoWgoPwufN2Bkog9nOiOdDfiuy8kFQZq@0xzzVCOdE0d/Qb1BGlgx1Ou4WTrbtbUtgBIdNLc7XgojIHJ8MngfDoMia77ZcITYaEXuEqEhn9EnphgPoGx06ZThrjbl6QOfusIUzd3qmTZMwh8PpA6Uxg@xVSLQcTJMnurth/icKf6OGM8jompRgiRa/xAiCnOSjRy5TaTKqUhkS8pOHynr3RRFaYszcwFeWZbjAL550CdnQ9@eTibjo5Tj83Fh8y1y8UQeZ671A1SBRiqVAflME57CZLWPH@TGj7Y@jH0UQAuKyozjsD8/YfU1PWHNqBo6TUpbHCQA3xeniJ8V/xipgarjIhW1m52bL74J7ZLVqbZykqDy7pCeE8ebbEdpFrXYqaAxNqu3A8@M6U4w5rSn9/ASmhc1Xl7EWH9GplLO99Mon56e6Ndtn1js24@t@MYDgW/vnv5ont433O2nh3UD3fuOiPZqXcuEok9e5VV1Zel3l29//3378WP7xO8@fY@CC3q@6eM37dOHp//TU2vsRncqHb6nHO82aeTw6SuqfeMkyohevktjf2if//D8/jTMqbP8sqc@h3e1or9pvzrSh3aW@0ctzfvvfv/tt6mHT8J/go@Rx9BvI7@5WWXe8R08dfnt90D@Fku84O71CdnLbO@e//TmzT8/F@Wh84dnHvPD8/v3T018I/Xx/tdf/wc "Python 3 – Try It Online"
- # [Python 3], ~~319~~ 318 bytes
- ```python
- print('riBfig,barBbilBdewBmulBtayBabiu,bael,date,lime,lulo,neem,noni,pear,pili,plum,rimu,sloe,sorb,yuzu,bearBblueBcranBcrowBemu BhackBjuneBlimeBpineBraspBwineBwolfByew Backee,akebi,apple,araza,cacao,caqui,carob,etrog,gấc,grape,guava,ilama,jagua,kokum,kubal,lemon,mango,melon,mundu,musho,nance'.replace('B','berry,'))
- ```
- [Try it online!][TIO-lmzg5d4n]
- This works by representing `berry,` (including the comma) as `B`. This means every fruit that ends in "berry" can effectively save 5 bytes. It turns out there are enough berries to make the 22 byte cost of `replace` worthwhile.
- This is the 55 shortest fruits measuring length after substituting "berry," with "B". I generated the code using this code: [Try it online!][TIO-lmzftgr9]
- ---
- *1 byte saved thanks to [msb's comment](https://codegolf.codidact.com/comments/thread/8512#comment-21966) which made me realise I was sorting the fruit by string length (which measures characters instead of bytes, making fruits with diacritics seem shorter than they really are).*
- ---
- ## My initial failed attempts
- Before I found this approach I tried shortening the other two Python 3 answers, but in both cases my misguided efforts only made the code longer...
- ### Trying to shorten [steffan153's answer](https://codegolf.codidact.com/posts/287088/287094#answer-287094)
- I noticed that some of the fruits had diacritics, which makes them longer in bytes than they appear, so instead of just using the 55 shortest fruit by characters, I used the 55 shortest fruit after throwing away any fruit with diacritics, like gấc and açaí. However, since we've already used up all of the fruit of length 5 bytes or less, each diacritic fruit removed brings in another 6 byte fruit, so the total length of the code went up by a byte:
- ```python
- print('fig abiu bael date lime lulo neem noni pear pili plum rimu sloe sorb yuzu ackee akebi apple araza cacao caqui carob etrog grape guava ilama jagua kokum kubal lemon mango melon mundu musho nance ooray peach pequi pluot prune pudau rowan rukam salak salal tapia terap tilap toyon wongi almond babaco bacuri banana bignay')
- ```
- [Try it online!][TIO-l8r3k4fp]
- ### Trying to shorten [Moshi's answer](https://codegolf.codidact.com/posts/287088/287095#answer-287095)
- I thought I could save some bytes by using fewer distinct characters in the list of fruits, since all of these need to be listed in the `while` loop that extracts the data. So I repeatedly found the letter present in fewest fruits, and discarded all fruits containing that letter, stopping short of ending up with fewer than 55 fruits remaining. This left me with only 14 distinct characters, down from 16 in the original code. However, the 2 bytes this saved were overwhelmed by the fact that the new list of 55 fruits contained longer fruits, since I'd discarded some of the shorter ones, leaving the code 14 bytes longer:
- ```python
- from base64 import*
- n=int.from_bytes(b85decode('5YBr@2zdh)fdaH`|L?o31mzCMMOw^}6Gp}*cGPdkWp!!fj9sk(ll2zIiI9x(m!Z#)4FT|UW1Q!@&rHc#p7PfklqbhsG`5TO^jF^L@qmX-@zKRADY>W*()(`#6^w=;IP9xHTgMq6GED;7>E#S9WNiB|2eKZ!HJ!qD(`e}qPwt+~b^KgJISyhSv!lv?ba68XFLI3{>}kf^>gaG928Ym{URfadB71USJH9{@PJ;Ya'),'big')
- while n:print(end="ambling poetry"[n%14]);n//=14
- ```
- [Try it online!][TIO-l8r46k1t]
- ---
- In hindsight I have no idea why I thought either of my initial approaches would work.
- [Python 3]: https://docs.python.org/3/
- [TIO-l8r3k4fp]: https://tio.run/##HZBBdsMwCESvMru0655oJFNHFRKqLJrnXN4h3XyG1R8Y57pb/7quMUtfH7fvsoOpOBJFsXEJtLSAq6GLNHTrBUM4MYpGUm@YpTkONcFhM@H0p4O5ioBVUgHH0MiTTyIz04K/XoLTEmRN27FPDsHu/COKshE/jA3VahiqJypUmnU09t3QRN/Z@@bB4x712LPAbPJ8F8z34NsSFW1hTO@C4Rsd0x7smF7ZcFBZ/6lYHIVYElWwokTQzrA8rO9xhYZ9i88kZouRfZYYoSVS2TvP2@d1vQA "Python 3 – Try It Online"
- [TIO-l8r46k1t]: https://tio.run/##FdDZUoJQAADQd79CZEqwxQERJQYkU1nUJNFRbCJALouyw7ig9utUz@ftxOfcjcJWWdppFFRNIwMkUfWCOErzRiVkvDB//pdv85yDDDG7bQtsIwsg9bbaTzm8sFzUtgxBv056UQsLirfpdHbUbiQf3xpbXrb2qxiC7B2V7RHfxwvRE6kTEkAbGCVGi@tyhX1A3H0qbOG4I9t7PzHdjNfbi5m2G2kTLgnWT1wxnr8OVHbVQFBEh0ntyNCiTJ2EhTNNSH44oDvsEFao1bvXv@JgvIEECUoGiA5uiXzMH35MbexIonJ2lQPkH3qmQXbXo4nYurC3va2xjsFTeFcNLsu5bVj9DrZUJIG6cLJEq0YdfaybnlNHK0fX80E1fInTvxMEhBZTMwLT90KnGkcgT8@1z/AOI75QOmw2GYwoy18 "Python 3 – Try It Online"
- [TIO-lmzftgr9]: https://tio.run/##hVpNjuS4sd7rFEJtqhvuHMAwBngYoDe@xnjQoCSmxBRFaviT2SrDR5iNT2DDePBqFg@zm23BeOfwScZfBH8kVTdgVEGMCElkMBiM@ILKdQuTNX/47TfRfmyfnp5Ep2IjXv8pXn9uRC@d1QLtRP9oZykbcR0nYdp@ks5t4JzqwXbCdqJrry6qUIXpmdY6YUa5S6MPwg0Xsa56l2pL8raTwlTZgvfsmfNByv0Bq3S7Cr28GXeV0LcRYxRe/RhVI2bZ4aqFn0nVaPqpS9prLcdJmq1ddVzALtYMubloKe5yoM5cIzC4CD4S8WJNOzqxQvelE05qMtEisx2kiGHLvVehhulaqQfp3txZxJbNUCRvp1Tkq3ReLVDsIGKdC@eg69eGILkTfs1iM0YtXOuluFzVCN5Yo3gKSQ@6tvnZFT3YUNo8XmLO1nFwG1pZe72Sh2T2ofTQFps6EVQfl0svxtd/2MQbCNrBYr5OkOSFrj2eOyrsFmlUMWKWebG0o9RxjC4xMxhaYq/S8kMc5GI3dBjghAFLdugSjuaEVl@47d32YrANJKKnpo9OoZEaF6VpuaTGAnTiZqMTba@CY1aL8Pp3arW1JhuvI@cwo6D7Bn@5qV0wswrvlTVp@CzbYt/T03kdO/LlZPpEku6P4z0fRyxoWj5I3LOvj9c@tK4PLLwZOwndNPaiw@bE2NKNYsEa573aqdEIvKh07iETbS/6EH02GKRqgdk7ZW6CGtdP8ItrWgGwQwkToFVHNlIhSFdH4X2RFWO6PJ6YohxzSyy6MJumyOS@son3YrUh93iQ791ZO7TQXGayahNli5jhaNGJPq8OSfxDygAbaHiIn5IMvjXG9HYezM4TnDlraLW6k6ctNpogFG2S3poY6M4DY2Gp7dJZchCLWKWpdfb2@gvazUuT@8TmQGAo5mGOeoW6d7zhpBiymkRy9w73X/8JfyzbuHPRT7WLOAyTgKsglg/grleh7QW5wME54dyT1dQOclY50IBbpJc59HXUVxd5NfPIkNwRgFq2RCTz4LY9xW14j7BN9iF2kh4mUYFksGksfRFHYUPRK1pdoZUSxwjQU@SGO@Y@9B27EVEnuVKPgOBf/2YmorrYK2pjSxdQRgzqnAWqzEt3V73cpRgh7VcwClPQRARYKq40zAprWOvrC5RreqS2119MnYizHa5@ko@2aIc4rpwVRHmRo0MvQtByywvaC/iMSz7ai4eEMXs5QNKJraxgL5cVshmECdLAQLq9C6fkiNA3tHNcfowCGuBhQTGWLSU3TdnroPREGQGxgKhVC0VDwX1VP0XMvKHBFAfSMmzK6VILKUYTfRFoER3ZJ6f8a4u42zplyV/MIMsNdqV@Uv2MuP3YWVsMNilEkOLY4Az5HBx@6WpeqtKDPxcZeUExdBYNsEdlrto@MCMzvnmIzMOh6@BG5VbWkRkssen3e2ePKUJkh7d6PSYVZF6ECREAKUO2d9yr87az3F8Ck/tMOSY1xRm1RE5E@oQecMUhP6ntfe9BI8fR1kSK761wZAY7ABxc0jqVUa0AFtNvpmH7eSvmgartIDGwa0rgojbZhNN9ecnsg1szFxiCR4Fc2LLe2EcROiM5ftU3nH2xR9zTI2KINiGY7AsUQN12yYACrEOSVHC5w5LD1/IQoGSxl5MyJwwiV1r9PWdAZPwEXywPVy3jQIkB7RqBiBE7cgKhdiu@GF3soFzCtEWNyPjo5EwxsETekWmhxAnP9FuPeKeqOQaxeKiCDX8XL0lx0A9lEK8rMGC3psslP3BXw7PP2Jc59FGwwCAe255eB@QICsu4e4UxgCwh0qpXFmF5t8wAx3WhILjC5WySWXKwTHK0ynTWIjGIQ2ZAlgSfTTvYsepiY3dc@ME@AMdPDollGG2JqInJdBzxj4ZyHRo/54wwxNBPaYLw90EYMgGy7bW9AQptp/FYTCD5sCBZGD3jyWIAFm4iiFMHUtBOM4e1LhKAe/hVZYMUqXc5juXdHa9LLVfE4pBdSOqF/eWglEQIVD2aWJ4BlW@ZcUbKbCSixNjI6OxKQfSQrHbZvluqrK7LLuG55iWqUnalyp0Liypm1M@rcJXPqs357SrVzVIDnEnAl/3jqjpHLuepFiBARd6UPDJ5U6IxTg6DV3WXpfI454QrAuoDYC77O8K8SyGyvnqQ1JU6ZIO0xlcL5zsVBVf7OUOea7ypYpLx37/@b9@MVETkuAH43FmgSEwPe1UJInzMEwVA7xVBmJ6f4rvAVgfLg8finiHniOKw9K7INSiVAqlQtTZaKJNftZq6mtQCF9jEsdLJt2b1ULlLu1gXABGaAwZI0@NrfsqJLQewPF2OWGzZRGaIzcwoRqYemB8VYKjf0D1wNK17it18zYOhTiO0PcZloSAqCuYbt2VV8pKaLJuq809CIYt4Ck@AdAHbfcJs62Oob/ZVBXwZNp40kXEWaB5CqZNpIEpotxDZmrsZj/ULEvIsFGDUWYhYcjTThCSYa38msbqVyAvJrI/9THpSGhzqDReiLpts4idyV1sc8@kDQuIF@Qr4ls9JFKM3OA0BwQa1w4KrGdRpF6qQSl3uV212xos3YG1aJmSuG0wMBHDF3mE6WfRGhye4wls1Pw@jazSrYDQj9Kr2fL@Lc26ogqO1duFp4@7iA5qrwi94LPLO8ZQq55W@l2j6RZi/0d6fmxssMWJbFnR8e/25J6txi1rsBmwDv74R@sg9xVvsIIlGFoFRgDRZ/Vl0Fgszi@tV5aA1i0nNyMuiSS5ziLizuCE25BXHQqxSoXFYgOrLM1wVoJHiJq3ULF7EnBZylqp0g2QxEDQB4WUG1XQEgmpglj6SQhAnbSaF4qmZKcgVBAdmpvgRAXxUJBbQDM1DGJsbJD@Ewz1wzPCcBd0gMm6I1JiDYvWom1w/z3YmNeAwLQ9i9TzZF1R3vkSxGSH4fJKTJbt1s@D0/L5pIdA8akSfABEU8YvdAMN0U9Z1jglxzNj37RLnRlO0IH8ABQ/AIxpRQr0IOr1psNWSD6UjKzYyQDZU4CvC2ioLAEmSAdnuWNmyVAx5Fmx5uuwsq6WxCtYUIVV8x1pM27HAV8x@vGBXo0jFUpfsRFJMX9vUmb2rC11APQ4mJO6En/Trr32Ek@uIgk7H118mFMdA1f//10Zv2GGyWRDCtebzsLyBFj7jcMm1OCK2zvIWJ9ssYpHbic4JYckwVsGRQC/cNwptRmg1PhxEeYMfJft2WSiXYl/GRCFRF18rPFMjxbF0VnxYESKB680myWbgrKD7KODaMkUn@ngTFJDudmcXS0Wo2AUAILA@P6HK6oG2mkWRH0UlT3VuZE22ov622rVZ5ABfa8ilKR83ybcXrtpHtJ/3w1xYkqAPe96ihlGWrLQo6KJLWgT3UvbUojYEsGpHS@df@wnhYjUdJ76JuQuhgAHDlv6oYNvOzJ4LkmBFfgBFUBZbL1ULHpO1dBBql9dfTaJRLPYAvAxSIECKksc4TPBDvf4fLFfOw/bdXUUn792ltX7cRSgCPZkYAaFUe/WccEEMiHQNTmExqHjbSj20RN8DSZH/IO1Yus71fT9nanPYoQVvFs/bPKLSQWuDvQNAB5TbS7reONJO@Z4xW3nMBCR1Gc6zM@Q2N7YWUjwScR4GjNrL@cLlAtTIPiTvN1IuuMDAFL0OSpFItRPqLJ6vAQB5kdjGZjhjTKPk8PKQ4WUm2yS/RX4TxzUzlhLZv35q6FMBLi5Mbf28cKgxEPUXWUqbf/2ESEcpwt4Qglf1GWtgZy0mu@SjUatTZcRIs3xKwKaiUNJY2GFrsjFg8LF@dLHOIoGYHs94AmvFRjaISdIhyyGi2jssWnLCKnp1BcbegWKRsDpkw/PaAFdhK6Nx8CBsxiI9mG8VD/w3CeVT@RPD@VSUJ7UiNRvCrMgixm/6Lt4cZ650KGHR0AkiwMU1LvLNQu3ff0DFewqn9K3mdCKPElJjV65qlDbHlFVpRRddPxKs@0kDwbgqLBNUnGXQzKV6I3qkvHJ8PlDk5Xbjxi5dbS@DuHTAQRBowXsVBFVATdIJF@6rqA2eEgO19eCkaKsj39mwyeF4yaB2sMgLa/Qg4XNUaiD7EI2gjGalkRC0Sx8gJfKXyLF1hRO1dGlWh8JCHWtCSELAXjhKFNB4OlooCru4GIvJbp5o7MQ1DiLiqoUn40VHa8PvX7JZkygVRJk5pKskuaSK9FRZ4058/bn5MXINtm/LfBSJCXiYNzVtQEWW79dKydFZekBSa2g7obtm75wPPr7yMYrlhMiTCbgGz9GH6P2hY6VCfA2/7q0Hk8AjBM1E1c6mSJijcSq/pZbYHJAGk5NamUgnIqdU5pAK8sccJtNJ43EXO/sgG6AMXBo6bj99XvWCzhcCvMVTxeNslZOedNXpmofzjMQKvawEwj0F1byfiKZyLJ28gsu4yNMmaHstsFNTciGJpc7hyxz@65MOaT8c3C9LyCXLIB71heVOUBUuorRtgUUQIMYYMe2vPHjaMoR9ig/0gR11iENIiqiy6VQPRuHquEhOK@klKn1DO0l@eaODQ@R3paglB9EpfhMmG28Ra@LpbLzlVByIWRGu0VqZPxwRQPeKRYaOgQk8@cnFEhk8@cwRV1bBIXx4Nc9qOZqTy8QCqTOXP4BlKyTZ18K51xY9AA/rAguusZ9YyaMwIYfiM8c7QRCKpIGXL4yfJG@PbrP45NNFFngFOPkQOkrBkal9hxNLn7E8cgDipUeGXWrvmIxFKkUAB6rpmuOXC6bZiy2FJtIkoy3PgbgigOK4JD0fhPqVPpvtTphZ3q2F2Q2CRQwFxKH8HvlQhty6J7YkLybzYgSkJcUHIEcfZKOcowQhYjPqsi13fLyTx8jpEcspXKYv62nuROafrHgUKkYsdVqot1GtzVwxPRr/AF7oBCzNH4uPKeDN5@PM7uZi/nDIlwRkrhDAbT0CObAnz2Fz9acOSK@PvZQqXO02CyhdSwaNbHLsv2R6jYxZF6EQ6ZsCv8K391eRsGhESrBI/GleVBOs6YpYjT4ybYRXRKLOAaKIVUP5WfiyAROTfLjQBekE4LuuJBcEafpOs89TjXROnPwF9QZpYMVwXMdg6WzXHm0BlOigud3wUhwBkdOT0fu4GxRZ882GI8RGK3KXCA3ljD4z1XgAZaPLpwx3FZSnD3zqClM0d6tn2jAZfzyQOlAaP0Q4iECnyTB5qrcf4nOh@DtiOo9IqiUJkujxhxBJWJJs4shtElVPRRJbU3b@SHncTUmUtzgzF@CVZdkP4JsHfXI29O3pZDI@Stk/H1e23CIXz@R@5np8gCrQROUyoJxpwlOYPOzjB7nxoz0exj4qoAVFZcZ@2F@esPqan7BmVA2dJuUtDhKA74tTxM@Kf4zUQNVxkYraYOfmi29Cm2R1Dls5S1B5d0jPmeNNtqE0S1psVNAYW9TbgGfGfCcac9rTW3yJzYsaLy9iPH5GplLO99Mon56e6Ndtn1js24@t@MYDgYd3T38yT@8b7vbTw7qB7n1PRHu1rmVC0Sev@qq6svT7y7ff/dB@/Ng@8btPP6Dggp5v@vhd@/Th6b/01Bob6M5Bhx8ox7sgjRw@fUW1b5xEGdHLd3nsD@3zH5/fn4Y5dVZe9tTn8O6o6O/ar470oZ3l9lHDoQfRfv5OS/Pu8zcSmXHAoDFcL//z9P79@@@/@/bb3Psn4T/B/8ib6HeT39ysMu/4Dp66/P4HVAUWy7/g7vUJmc2Ed89/fvPmX57rxDCfD8@sz4fn9@@fmvRG7uP9b7/9Bw "Python 3 – Try It Online"
- [TIO-lmzg5d4n]: https://tio.run/##FY/LbcRQCEVbmZ1nJJRNOqAT3jNjM@Z9gk0sTz9pIt2kEgdvjg666Ar6sc2tfp5nN6nbfTDBp0yQyDCJ4sg7Flfc6EBK4hGwwkgbg0oJuDaozAVqqwKdyaCLhqkXMCkOqzaGtVmCw99RwFe1OmM2qoG2Ixe/4Ux5wZdXxqsZu4QZrR33y/amTzx4v2GsMQMtnASodw03ehNkytSCXy5Bawl4szbB9Pf7k2Ey6gyT0zeBKBWCF8UES1vi0MUTKSiXVqFQnRoU1su9jh5c5/iSaubhw7grZb4POMCQ2OyA4fE4z38 "Python 3 – Try It Online"
#1: Initial revision
# [Python 3], 319 bytes ```python print('riBfig,gấc,barBbilBdewBmulBtayBabiu,açaí,bael,date,lime,lulo,neem,noni,pear,pili,plum,rimu,sloe,sorb,yuzu,bearBblueBcranBcrowBemu BhackBjuneBlimeBpineBraspBwineBwolfByew Backee,akebi,apple,araza,cacao,caqui,carob,etrog,grape,guava,ilama,jagua,kokum,kubal,lemon,mango,melon,mundu,musho'.replace('B','berry,')) ``` [Try it online!][TIO-l8r2su8j] This works by representing `berry,` (including the comma) as `B`. This means every fruit that ends in "berry" can effectively save 5 bytes. It turns out there are enough berries to make the 22 byte cost of `replace` worthwhile. This is the 55 shortest fruits measuring length after substituting "berry," with "B". I generated the code using this code: [Try it online!][TIO-l8r5md6s] [Python 3]: https://docs.python.org/3/ ## My initial failed attempts Before I found this approach I tried shortening the other two Python 3 answers, but in both cases my misguided efforts only made the code longer... ### Trying to shorten [steffan153's answer](https://codegolf.codidact.com/posts/287088/287094#answer-287094) I noticed that some of the fruits had diacritics, which makes them longer in bytes than they appear, so instead of just using the 55 shortest fruit by characters, I used the 55 shortest fruit after throwing away any fruit with diacritics, like gấc and açaí. However, since we've already used up all of the fruit of length 5 bytes or less, each diacritic fruit removed brings in another 6 byte fruit, so the total length of the code went up by a byte: ```python print('fig abiu bael date lime lulo neem noni pear pili plum rimu sloe sorb yuzu ackee akebi apple araza cacao caqui carob etrog grape guava ilama jagua kokum kubal lemon mango melon mundu musho nance ooray peach pequi pluot prune pudau rowan rukam salak salal tapia terap tilap toyon wongi almond babaco bacuri banana bignay') ``` [Try it online!][TIO-l8r3k4fp] ### Trying to shorten [Moshi's answer](https://codegolf.codidact.com/posts/287088/287095#answer-287095) I thought I could save some bytes by using fewer distinct characters in the list of fruits, since all of these need to be listed in the `while` loop that extracts the data. So I repeatedly found the letter present in fewest fruits, and discarded all fruits containing that letter, stopping short of ending up with fewer than 55 fruits remaining. This left me with only 14 distinct characters, down from 16 in the original code. However, the 2 bytes this saved were overwhelmed by the fact that the new list of 55 fruits contained longer fruits, since I'd discarded some of the shorter ones, leaving the code 14 bytes longer: ```python from base64 import* n=int.from_bytes(b85decode('5YBr@2zdh)fdaH`|L?o31mzCMMOw^}6Gp}*cGPdkWp!!fj9sk(ll2zIiI9x(m!Z#)4FT|UW1Q!@&rHc#p7PfklqbhsG`5TO^jF^L@qmX-@zKRADY>W*()(`#6^w=;IP9xHTgMq6GED;7>E#S9WNiB|2eKZ!HJ!qD(`e}qPwt+~b^KgJISyhSv!lv?ba68XFLI3{>}kf^>gaG928Ym{URfadB71USJH9{@PJ;Ya'),'big') while n:print(end="ambling poetry"[n%14]);n//=14 ``` [Try it online!][TIO-l8r46k1t] --- In hindsight I have no idea why I thought either of my initial approaches would work. [Python 3]: https://docs.python.org/3/ [TIO-l8r2su8j]: https://tio.run/##FY/NbcMwDEZXyc0JQPTSDbgJZTO2YkpUabOGs0/RUxfoNZN0Epe@PDziI/jT9nXS@n4czXJdr51lvOcRxr/frx4SGaYsOPCGxQVX2pFSdqDXN71@ImeBgVYGySXgolCZC1StGRqTQcsSJl7AcnFYRBkWtQS7Px0SnxvEGXujGtANufgFJ@pnfHhlPCdjy2FGS8PttE3ljjtvF4w2ZqCZUwZqTcKNngQ99aTBD89B0wS8msZfRo1hdPokyEKF4EFRwaxznDh7IgHhohUK1VGhsJzudfDgMmn3ZtyEer522EGX2GyH7nY7jn8 "Python 3 – Try It Online" [TIO-l8r3k4fp]: https://tio.run/##HZBBdsMwCESvMru0655oJFNHFRKqLJrnXN4h3XyG1R8Y57pb/7quMUtfH7fvsoOpOBJFsXEJtLSAq6GLNHTrBUM4MYpGUm@YpTkONcFhM@H0p4O5ioBVUgHH0MiTTyIz04K/XoLTEmRN27FPDsHu/COKshE/jA3VahiqJypUmnU09t3QRN/Z@@bB4x712LPAbPJ8F8z34NsSFW1hTO@C4Rsd0x7smF7ZcFBZ/6lYHIVYElWwokTQzrA8rO9xhYZ9i88kZouRfZYYoSVS2TvP2@d1vQA "Python 3 – Try It Online" [TIO-l8r46k1t]: https://tio.run/##FdDZUoJQAADQd79CZEqwxQERJQYkU1nUJNFRbCJALouyw7ig9utUz@ftxOfcjcJWWdppFFRNIwMkUfWCOErzRiVkvDB//pdv85yDDDG7bQtsIwsg9bbaTzm8sFzUtgxBv056UQsLirfpdHbUbiQf3xpbXrb2qxiC7B2V7RHfxwvRE6kTEkAbGCVGi@tyhX1A3H0qbOG4I9t7PzHdjNfbi5m2G2kTLgnWT1wxnr8OVHbVQFBEh0ntyNCiTJ2EhTNNSH44oDvsEFao1bvXv@JgvIEECUoGiA5uiXzMH35MbexIonJ2lQPkH3qmQXbXo4nYurC3va2xjsFTeFcNLsu5bVj9DrZUJIG6cLJEq0YdfaybnlNHK0fX80E1fInTvxMEhBZTMwLT90KnGkcgT8@1z/AOI75QOmw2GYwoy18 "Python 3 – Try It Online" [TIO-l8r5md6s]: https://tio.run/##hVpNjuW4Dd77FEZtqhvpN0AQzCZAb3KNyaAh23q2nmXJI1nvtSvIEWaTEyQIgqxmEcxutoUg58hJJh@pH8vVDQRVsEjaliiKIj/Kb923yZrf/fqraD@2T09PolOhEa//FK8/NaKXzmqBdqJ/tLOUjbiOkzBtP0nndnBO9WA7YTvRtVcX1FaE8ZnWOmFGeUiD34QbLmJd9SHVluRtJ4UpsgXv2TPnNymPB6zS7Sr08mbcVULfRoxBePVDUI2YZYerFn4mVYPppy5qr7UcJ2n2dtVhAbtYM6TmoqW4y4E6c43A4GLzgYgXa9rRiRW6L51wUpOJFpnsIEXY9tR7EWqYrpV6kO7NnUXsyQxZ8nZKWb5K59UCxSoR65w5B12/NgTJnfBrEpsxaOFaL8XlqkbwxhrFU4h60LVNz67owW65TeNF5mwdB7ehlbXXK3lIYh9KD222qROb6sNy6cX4@ncbeQNBO1jM1wmSvNC1x3O1wm6RRmUjJpkXSztKHcbgIjODoSX2Ki4/xJtc7I4ONzjhhiWruoSjOaHVF257t70YbAOJ6Knpg1NopMZFaVouqbEAnbjZ4ETbq80xq8X2@jdqtbUmGa8j5zCjoPsGf6kpXTCzCu@VNXH4JNtD39PTaR078uVo@kiS7o/6ng8jFjQuHyTu2ZfHSx9alwcW3oydhG4ae9Fhc2Js6UaxYI3TXu3UaAReVDr1kIi2F/0WfDIYpGqB2TtlboIa10/wi2tcAbBDDhOgVUc2UtsmXRmF90VSjOn8eGSycswtIevCbJwik8fKRt6L1W6px0p@dGft0EJzmciiTZAtYoajRSf6vDok8Q8pN9hAw0P8FGXwrTHEt9Ngdp7gzElDq9WdPG2xwWxC0SbprQkb3XlgLCy1XTpLDmIRqzS1zt5ef0a7e2lSn9gcCAzZPMxRr1D3jjecFENSk0ju3uH@6z/hj3kbdy74qXQRhmEScBXE8gHc9Sq0vSAXODgnnHuymtpBzioFGnCL9DKFvo766gKvZhoZkjsCUMuWCGQe3LanuA3vEbZJPsRO0sMkaiMZbBpyX8RR2FD0ilZXaKVEHQF6itxwx9SHvmM3IupEV@oREPzrX81EVBd6RW1o6QLKiEGds0CReenuqpeHFCPE/QpGYQqaiA2WCisNs8Ia1vryAuWaHqnt9WdTJuJsh6uf5KPN2iGOK2cFUV6k6NCLbdNyTwvaC/iMiz7ai4eEMXs5QNKJPa9gL5cVshmE2aSBgXR7F07JEaFvaOew/BAENMDDgmIsW0rumrJXpfREGQGxgKhVC0VDwX1VPwXMvKHBFAfSPGzM6VILKUYTfBZoERzZJ6X8a4u42zplyV/MIPMNdqV@Uv2MuP04WJsNNilEkOzY4Az5HBx@6UpeKtLKn7OMvCAbOokG2KMwV20fmJEZ3zxE5uHQVblRvpV0ZAZLbPrj3tljshDZ4a1ej0ltMi3ChAiAlCHbO@6VedtZHi@BSX3GHBOb7IxaIicifUIPuOKQntT2fvSgkeNoayLF91Y4MoMdAA4ucZ3yqFYAi@k307D9vGfzQNV2kBjYNTlwURttwuk@v2SOwa2ZMwzBo0AubFlv7CMLnZEcv8obzr7YGvf0iBiijQgm@QIFULdfEqAA65AkFVyuWnL4WhoClMz2clKmhEHkSqt/5AyIjJ/gi/nhomUYKDGgXQMQMWJHSiDU7tkXgwsdlIuYNqsRGB@dnClsLJF3ZFooccIz/d4j3qlijkEsHqpgw9/FS1Qc9EMZxOsCDNit6XJJD9zV8OwT9mUOfWQsMIjHfqTXATmCwjLuXmEMIEuItOqVRVg@LDPAcd2WEVzmUjZJLDlYIjlaJTppERnEITMgS4JPph3sWHSxoasXfrAPwPGTQ2IZRpsjamQSHUb8o6Fch8bPKSMMYeunOEH4@yAMmQDZ9treAIX203gsJpBcLUgSBs94MhuAhbvYxKkDKWinmWqtswTgHn5V2E2K2Lscx/zugdelliti8ZZcSOqF/aVSSiIEqh5NyM@ASrfMOCNlNhJRYmxkcHalIFolq0N27JYiK@tySHiuaYmKlF2pcOfCoogZ9fMqXOWzalN@u0p1s9QAZxLwZf@4qs6Ry3mqBQhQkTdFj4zeFGmMk8LgVd1lrjzOOeGKgPoAmEv@jjDvYogsr1aSslJVNohrfLVwvlNRcLWfE@S5hpvKJhn/@8s/@makIiLFDcDnzgJFYnrYq0oQ4UOaKAB6rwjC9PwU3wW2qiwPHot7hpwjisPcuyLXoFQKpELV2mihTHrVaupqUgtcYBd1pZNuzeqhUpd2sW4DRGgqDBCnx9f0lBN7CmBpuhyx2LKRTBCbmVGMTD0wPyrAUL@he@BoWvcYu/maBkOdRmh7DMtCQVRkzDfuy6rkJTZJNhXnn4RCFvEUngDpNmz3CbMtj6G@OVYV8GXYedJEhlmgeQilTqaBKKLdTCRrHmas6xck5FkowKizELGkNtOEJJhqfyaxuoVIC8msD/1MelIaHMoNtwWdN9nET6Su9jCm0weExAvyFfAtn5MoRm9wGgKCDWqHBVczqNMuVFssdblftdsZL96AtWmZkLluMDEQwBV7h@lo0RsdnuAKb9X8PIyu0ayC0YzQqzry/SFOuaEIamsdwtPGPcQVmivCL3gs8sHxlArnlb7naPpFmL/R3p@bGywxYltmdHx7/aknq3GLWuwGbAO/vhH6SD2FW@ggCUZmgVGANEn9WXQWCzOL61WloDWLSc3Iy6KJLlNF3FncEBvSimMhVqnQOCxA8eUZrgrQSHGTVmoWL2KOCzlLlbtBshgImoDwMoFqOgJBNTBLH0ghiKM2k0Lx1MwU5DKCAzNT/AgAPioQC2iG5iGMTQ2SH8LhEThmeM6CbhAZd0RqzEGxetRNqp9nO5MacJiWB7F6nuwLqjufo9iMEHw@yUmSw7pJcHr@2LQQaB41oE@ACIr42W6AYbrJ6zqHiDhm7Pt2CXOjKVqQP4CCB@ARjSihXgSd3jTYatGH4pEVGxkgGyrwFWFtlRmARMmAbFdXtiwVQ5oFW54uB8tqaayCNVlIFV9di2k7ZviK2Y8X7GoUqVjqnJ1IiulrGzuzd3WhC6hHZULiTvhJv/7SBzi5DijodHj9eUJxDFT9n780escOk82CEK41n4elDbTwGYeLrsURsXWWtzjZZhGL3E90SghLgrEKjgR64b5RaDNCK/GhEqUNXkuO7bJQLsW@DJFCos6@lnmmRopj8ay4WhEigevNLslm4Kyg@yjg2jxFJ/pwExSQ7vZgF0tFqDgEACCwPj@h8uqBtppFgR9FJU91bmBN9qz@vtq1WeQAX2vIpSkfN9G3F67aR7Sfj8NcWJKgD3veooZR5qy0KOiic1oE95L31KJ2BLBiR0vnX8cJ4WI1HSe@ibkLoYABw@b@qGDbz8yRC6JgRX4ARVAWWy9WCx6TtXQQapfXX0ykUSz2ALwMUiBAipJ1HCb4oV7/Bcvl87BjdxfRyXsPaakfDxGKQE8mRkDI1V45J1wQAwJdN6ewGFS87bkeWoLvgaTIf5B2LF3n8r6fE7U77NCMN7Pn7R5RqdLaYO8A0AHl9pKuN460U7pnzJ4fMxuSutzOszPkNje2FlI8EnEaBow6yvnMpQLUyH6L3m@kXHCBgSl6VUqRSLUT6iyerwEAeZHYxmY4Y0yj5PDykNvLTLaJfov8Juo1M5YS2b9/bOhTAS5um9ryeaGqMRD1F5lLm3//iEhHKcLeEIJX9RlrYGctJruko1GrY2XESDN/SsCmolDSWNhhb5IxYPCxfHSxziKBmB7PeAJr2UZ2E5OkQ5Yqoto7LJpzwip6dQXGPoBilrA6ZMPz2gBXYSujcfAgbMYsrcy3igf@m4jyqfwJ2/lUlCe1IjUbwqzIIsbv@i7eHGeudChh0dAJIsDFNSzyzUId339AhXsMp/St5nQijxJSY1euapQ2xZRVaUUXXT4SrMdJA8G4IswTVJxl0My5eiN6pLxSP79R5OV258YuXWkvg7h0wEEQaMF7FQRVQE3UCRfuK6sNnhIDteXgJGurA9/ZscnheNGgdrDIC2vwIOFzVGog@xCNoIxmpZEQtHMfICXyl0ixdYUTtXRpVofCQtU1ISTbhr1QSxTQeDxayAq7sBiLye6eaOzENQwi4KqFJ@MFR2vD71@SWaMoFkSJqdJVlFxiRXqqrHEnvP7U/BC4Bju2ZTqKxAQ8zBubdkNFlu6XSsnRWfqGpNbQdkJ3zdE5H3x85WMUywmRRxNwDZ6iD9HHQ3WlQnwJv@6tB5PAIwTNRJXOpkCYo3EqvaWW0FRIg8lJrUzEE5FTKnNIBeljDpPxpLHexc4@yAYoA5eGjttPn1e9oPOFDd7iqeJxtshJT7rqeE3DeUZimV5WAuGegmraT0RTORZPXsElXORpE7S9FtipMbmQxFLn8GUO/@VJh7S/Ve6XJOSSeRCP@sJyJ6gKF5HbNsMiCBBjjJiOVx48bbltxxQf6AM7qopDSIqosulUD0bh6jhLTivpJSp9QztJfnmjg0Okd6UoJQfRMX4TJhtvAWvi6Wy85VS8EbMiXKO1Mn04IoDuFYsMHQMTePKTCzkyePKZGlcWQRU@vJpntdTm5DIxQ@rEpQ9gyQpR9rVw7rVFD8DDOsOCa@gnVrIWRuSQfaa@swlCkTTw8oXxo@Tt0W0Sn3w6yzZeAU4@hI5icGTq2OHE0mcsjxyAeOmRYZfSOyZjkUoRwIFquqb@csE0e7Gl0ESaJLTlORAXBJAdl6Tng1C/0mezwwkTy7s1M4dBsIhbBnEov0c@lCG37onNyYvJtBgb0pLiA5DaB9ko5yhBiNiMOm/LAx8fZB05PWI5hcv4ZT3Oncj0kxWPQsWIpUwL9TaqtZkrpkfjH8ALnYCl@WNxnQLefD5O7GEu5qtDviggc20buL1HIAf25DnsrvzUAen1cZRSmSvdJgGla8mgkU2O/RdNr5ExyyJkIn5T4Ff49vEqEhaNSAkWiT/Oi2qCNV4Rq9FHoo3wikjUOUAUoWgoPwufN2Bkog9nOiOdDfiuy8kFQZq@0xzzVCOdE0d/Qb1BGlgx1Ou4WTrbtbUtgBIdNLc7XgojIHJ8MngfDoMia77ZcITYaEXuEqEhn9EnphgPoGx06ZThrjbl6QOfusIUzd3qmTZMwh8PpA6Uxg@xVSLQcTJMnurth/icKf6OGM8jompRgiRa/xAiCnOSjRy5TaTKqUhkS8pOHynr3RRFaYszcwFeWZbjAL550CdnQ9@eTibjo5Tj83Fh8y1y8UQeZ671A1SBRiqVAflME57CZLWPH@TGj7Y@jH0UQAuKyozjsD8/YfU1PWHNqBo6TUpbHCQA3xeniJ8V/xipgarjIhW1m52bL74J7ZLVqbZykqDy7pCeE8ebbEdpFrXYqaAxNqu3A8@M6U4w5rSn9/ASmhc1Xl7EWH9GplLO99Mon56e6Ndtn1js24@t@MYDgW/vnv5ont433O2nh3UD3fuOiPZqXcuEok9e5VV1Zel3l29//3378WP7xO8@fY@CC3q@6eM37dOHp//TU2vsRncqHb6nHO82aeTw6SuqfeMkyohevktjf2if//D8/jTMqbP8sqc@h3e1or9pvzrSh3aW@0ctzfvvfv/tt6mHT8J/go@Rx9BvI7@5WWXe8R08dfnt90D@Fku84O71CdnLbO@e//TmzT8/F@Wh84dnHvPD8/v3T018I/Xx/tdf/wc "Python 3 – Try It Online"