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
#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"