You have to create a code which prints
:)
a random number of times from 1 to 255 inclusive. Your output may not contain any whitespace.
Your score :
The count in bytes
EDIT : Also show 3 outputs of your code
You have to create a code which prints
:)
a random number of times from 1 to 255 inclusive. Your output may not contain any whitespace.
Your score :
The count in bytes
EDIT : Also show 3 outputs of your code
":)".repeat(new Date%256)
Outputs (REPL):
> ":)".repeat(new Date%256)
":):):):):)"
> ":)".repeat(new Date%256)
":):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)"
> ":)".repeat(new Date%256)
":):):):):):):):):):):):):):):):):):):):):):):):):):):)"
new Date%256
, instead of Date.now()%256
. 2 characters shorter.
\$\endgroup\$
Commented
Mar 6, 2014 at 19:11
x,i; main
(){ srand
(time
(0));
for (x=
rand() %256;
i<x; i++)
printf(":)");}
I never get to do ASCII art code, and the 65 needed characters in the code are already running long as is... This was actually harder than I thought it would be because of the small number of characters to work with and the density of the code. Gets the point across at least.
Boring version:
x,i;main(){srand(time(0));for(x=rand()%256;i<x;i++)printf(":)");}
Note - Auto code counts are going to be off because I had to replace 8 tabs with spaces to get it to look the same in the code window. You can verify my count here if you want.
Edit: Oops, forgot to post output (newlines added for legibility).
comintern@fidel ~ $ ./a.out
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):)
comintern@fidel ~ $ ./a.out
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
comintern@fidel ~ $ ./a.out
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):)
implicit declaration of built-in function ‘printf’
, but works fine.
\$\endgroup\$
Commented
Mar 6, 2014 at 6:01
for(x=rand()%256;i++<x;)
. EDIT: But it would break your ASCII art, yeah.
\$\endgroup\$
Commented
Mar 8, 2014 at 10:00
x;main(){srand(time(0));for(x=rand()%256;--x;)printf(":)");}
.
\$\endgroup\$
":)"256rand*
Nothing really interesting here.
256
rather than 255
?
\$\endgroup\$
9
. :)
\$\endgroup\$
Commented
Mar 6, 2014 at 9:05
Scala makes everyone happy. Need 266 votes to lower the score.
(""" :^) :^( :^[ :^] :^D :^P :^b :^& :o) :o( :o[ :o] :oD :oP :ob :o& :O) :O( :O[ :O] :OD :OP :Ob :O& :) :( :[ :] :D :P :b :& ;^) ;^( ;^[ ;^] ;^D ;^P ;^b ;^& ;o) ;o( ;o[ ;o] ;oD ;oP ;ob ;o& ;O) ;O( ;O[ ;O] ;OD ;OP ;Ob ;O& ;) ;( ;[ ;] ;D ;P ;b ;& =^) =^( =^[ =^] =^D =^P =^b =^& =o) =o( =o[ =o] =oD =oP =ob =o& =O) =O( =O[ =O] =OD =OP =Ob =O& =) =( =[ =] =D =P =b =& 8^) 8^( 8^[ 8^] 8^D 8^P 8^b 8^& 8o) 8o( 8o[ 8o] 8oD 8oP 8ob 8o& 8O) 8O( 8O[ 8O] 8OD 8OP 8Ob 8O& 8) 8( 8[ 8] 8D 8P 8b 8& B^) B^( B^[ B^] B^D B^P B^b B^& Bo) Bo( Bo[ Bo] BoD BoP Bob Bo& BO) BO( BO[ BO] BOD BOP BOb BO& B) B( B[ B] BD BP Bb B& %^) %^( %^[ %^] %^D %^P %^b %^& %o) %o( %o[ %o] %oD %oP %ob %o& %O) %O( %O[ %O] %OD %OP %Ob %O& %) %( %[ %] %D %P %b %& @^) @^( @^[ @^] @^D @^P @^b @^& @o) @o( @o[ @o] @oD @oP @ob @o& @O) @O( @O[ @O] @OD @OP @Ob @O& @) @( @[ @] @D @P @b @& X^) X^( X^[ X^] X^D X^P X^b X^& Xo) Xo( Xo[ Xo] XoD XoP Xob Xo& XO) XO( XO[ XO] XOD XOP XOb XO& X) X( X[ X] XD XP Xb X& ^__^ """.replaceAll("\n","").replaceAll("x|X",":)") .replaceAll("(:|=|8|B|;|%|@)+",":") .replaceAll("[^:]+","\\)") .substring(0,new scala.util.Random().nextInt(256)*2))
res32: String = :)
res33: String = :):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):) :):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):) :):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):) :):):):):):):):):):):):):):):):):):):):)
res34: String = :):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):) :):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):) :):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):) :):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
FYI, the code to generate all smileys is the following:
for(i <- ":;=8B%@X"; j <- "^oO".toIterator.map(_.toString) ++ List(""); k <- ")([]DPb&") yield (i.toString+j.toString+k.toString)
// eyes nose or nothing mouth
print':)'*(id(9)/8%256)
Demo
D:\temp>smiley.py
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):)
D:\temp>smiley.py
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):)
D:\temp>smiley.py
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):)
id(9)
is not random and id(9)%255
will never give 255.
\$\endgroup\$
id
is always divisible by 8, so only 32 unique numbers can be produced from id(x)%256
. If you divide by 8 first it should fix this.
\$\endgroup\$
print id(9)/8%256*':)'
:)
\$\endgroup\$
Commented
Mar 10, 2014 at 0:59
Me and my buddy pair programmed (Agile Methods ftw) this golfed Java Enterprise solution.
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.List;
public class EnterpriseJavaSolution {
public static class BodyPart {
private char[] part = new char[2];
public BodyPart (String part) {
this.part = part.toCharArray();
}
public String toString() {
return new String(part);
}
}
public static class Eyes extends BodyPart {
public Eyes () {
super(":");
}
}
public static class Mouth extends BodyPart {
public Mouth () {
super(")");
}
}
public static class Face extends BodyPart {
/**
* So generic, much parts
*/
public Face (List<BodyPart> parts) {
super(parts.toString());
}
}
public static void main (String[] args) {
SecureRandom seed = new SecureRandom();
//Very random, dont use all RAM though!!
SecureRandom reallyRandom = new SecureRandom(seed.generateSeed((int) (Runtime.getRuntime().maxMemory() / 2.0)));
byte[] randomNumber = new byte[1];
reallyRandom.nextBytes(randomNumber);
ArrayList<Face> smilees = new ArrayList<Face>();
//Why are Java bytes signed! Such inconvenience
for (int numSmilee = 0; numSmilee <= Math.abs(randomNumber[0] * 2.0); numSmilee++) {
ArrayList<BodyPart> bits = new ArrayList<BodyPart>(new Integer((int)2.0)); //Optimal
bits.add(new Eyes());
bits.add(new Mouth());
smilees.add(new Face(bits));
}
//TODO: make N-tier solution for printing
System.out.println(smilees.toString().replaceAll("[^:)]",""));
}
}
I've timed the runtime and given some example output below. I'm satisfied at the production readiness of this code.
$ time java EnterpriseJavaSolution
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
real 0m53.678s
user 0m4.380s
sys 0m48.568s
$ time java EnterpriseJavaSolution
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
real 0m51.928s
user 0m4.218s
sys 0m46.704s
$ time java EnterpriseJavaSolution
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
real 0m55.480s
user 0m4.074s
sys 0m50.621s
":)"*(Random 256)
PS C:\Users\DocMax> ":)"*(Random 256) :):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
PS C:\Users\DocMax> ":)"*(Random 256) :):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
PS C:\Users\DocMax> ":)"*(Random 256) :):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
Edit: Removed Get-
following Rynant's awesome news-to-me input. It's not often that PowerShell is competitive at code golf.
Get-<Something>
functions in PowerShell are automatically aliased as <Something>
, so you can save 4 bytes by getting rid of Get-
\$\endgroup\$
Measure-Command {Get-Random}; Measure-Command {Random}
to see the difference. On my system, they're 0.1579 ms vs. 30.0963 ms. It's hardly noticeable when you're just running it once, but it can be a big deal when your script uses the command a lot more (say, 30,000 times)!
\$\endgroup\$
Note I liked what @Comintern, so tried to do something similar with my answer
/*
Uninitialized c will always randomized to an address range (assuming system
supports ASLR.
Recursion instead of loop to reduce code length
As whitespace is not counted, organized the code to represent a smiley character
*/
main(a
,
c)
{c &&
main (
printf (
":)" )
,( c&
255
)
-1);}
Demo
D:\temp>Smiley.exe
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):)
D:\temp>Smiley.exe
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):)
D:\temp>Smiley.exe
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):)
IDEONE
(c&0xff)
instead of abs(c)%256
? This should work due to integer promotion.
\$\endgroup\$
Commented
Mar 6, 2014 at 6:48
c&&main(printf(..),..);
would be shorter.
\$\endgroup\$
printf
to main
's arguments.
\$\endgroup\$
?1+:'ÿ`!j@"):",,>
@
?
sends the IP in a random direction, either left, right, up, or down. After doing so, I increment a counter and compare it to 255: 1+:'ÿ`!
. j@
will exit if this is the 256th time. "):"
is the frowny face that I'm supposed to print, and ,,
prints it (output: :)
). The >
is to ensure that if the IP goes left, it will change directions and go right.
On each iteration, there is a 2/3
probability that the loop will exit. This means that the probability that comparing to 255
is needed (assuming perfect random) is
Is that close enough to zero to justify not comparing to 255 (it would save me 10 bytes, bringing me down to 10 bytes)? For comparison, this number is about 2.158 × 10-122
. The number of atoms in the universe is about 1080
. The Planck length, the smallest measurable length (as in the universe does not allow for smaller), is 1.616199(97) × 10-35 m
. This means that if this number were the size of the Planck length, the Planck length would be about
8.5×1059 × diameter of the observable universe (93 billion light-years)
First output:
:)
Second output:
:):)
Third output:
:):):):):)
Alternatively, if I am allowed to print null characters, then this works, for 19 bytes:
?,,":)"_@#-ÿ':+1
@
Exploit (you say random times in the range 0-255
, so I'll choose random in the range 0-126
, saving 1 more byte):
?1+:'~`!j@"):",,>
@
Surprisingly, there is a subtle behaviour in the J interpreter that prevents a quick 12 character solution: the interpreter's REPL output is truncated after 256 characters, so you have to print directly to stdout to "do it right".
1!:2&4^:(?256)':)'
Explained:
1!:2&4
- Print to stdout (file handle 4)...^:(?256)
- ... a random number of times less than 256...':)'
- ... the string :)
.Examples:
1!:2&4^:(?256)':)'
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
1!:2&4^:(?256)':)'
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
1!:2&4^:(?256)':)'
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
And, for posterity, here's the 12 char solution which generates the string but is unable to display it right.
':)'$~2*?256
We take the random int, multiply it by 2, and then create a string that long, cyclically pulling characters from :)
. Yes, this is shorter than copying the string.
(9!:37) 0 512 0 222
. I'm not sure whether setting global parameters is allowed outside of the character count though.
\$\endgroup\$
echo(+:?128)$':)'
\$\endgroup\$
Commented
Mar 7, 2014 at 1:04
echo':)'$~+:?256
(16 char), but it falls prey to the same bug as above, because echo uses 1!:2&2
and not &4
, and thus respects the settings in 9!:36
.
\$\endgroup\$
Commented
Mar 7, 2014 at 1:33
(with help from manatwork, David Herrmann, and Victor)
$><<':)'*rand(256)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
rand(256)
to get 0-255?
\$\endgroup\$
Commented
Mar 6, 2014 at 6:15
$><<
to output; 2 characters by removing the outer pair of parenthesis. $><<':)'*rand(255)
\$\endgroup\$
Commented
Mar 6, 2014 at 7:44
$><<
looks fancy, but is there anything wrong with puts':)'*rand(255)
?
\$\endgroup\$
Thanks to skibrianski for shaving 3 characters.
say":)"x rand 256
Sample execution:
$ perl -M5.10.0 -e 'say":)"x rand 256'
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):)
$ perl -M5.10.0 -e 'say":)"x rand 256'
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):)
$ perl -M5.10.0 -e 'say":)"x rand 256'
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):)
$ perl -M5.10.0 -e 'say":)"x rand 256'
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
rand 255
doesn't include 255
\$\endgroup\$
256
. (Between 0 and 255 is ambiguous at best.)
\$\endgroup\$
say":)"x($$&255)
(or if you want to be a smartass, say":)"x($^T&255)
, where ^T
is the literal control character)
\$\endgroup\$
<?=str_repeat(':)',rand()%256)
mt_
\$\endgroup\$
<?=str_repeat(":)",rand()%256);
\$\endgroup\$
print':)'*__import__('random').randint(0,255)
(Originally this printed :)\n
, the newline was removed upon OP's clarification)
The (slightly) more idiomatic way to do this is
from random import*
print ':)'*randint(0,255)
which is... also 45 bytes, but I figured "why not make it a one-liner?"
Three sample outputs:
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
print':)'*(whatever)
includes newlines. I didn't test it until right now. I learned something new today!
\$\endgroup\$
Commented
Mar 6, 2014 at 3:00
os.urandom
instead.
\$\endgroup\$
import os;print':)'*ord(os.urandom(1))
\$\endgroup\$
import os;':)'*ord(os.urandom(1))
at 33 chars
\$\endgroup\$
Row@Table[":)", {RandomInteger@255}]
Examples
printf -va %$[RANDOM>>7]s;echo ${a// /:)}
Sample outputs:
$ printf -va %$[RANDOM>>7]s;echo ${a// /:)}
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
$ printf -va %$[RANDOM>>7]s;echo ${a// /:)}
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
$ printf -va %$[RANDOM>>7]s;echo ${a// /:)}
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
$
(?255)⍴⊂':)'
In this code, ?255
generates a random number between 1 and 255. The ⍴
function repeats the argument to the right this number of times. The expression ⊂':)'
encpsulates the string :)
into a single object, since otherwise the expression 3⍴':)'
would yield :):
as opposed to :) :) :)
.
Edit: The behaviour of this function depends on the value of ⎕IO
. If it's set to 0 (the default in many versions of APL) then ?255
will return a value in the range 0-254. If it is 1, the return value with be in the range 1-255.
The randomness is stretching the rules a fair bit, but each run will probably be different.
print':)'*(id(1)%255)
And some example runs:
> python -c "print ':)'*(id(1)%255)"
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
> python -c "print ':)'*(id(1)%255)"
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
> python -c "print ':)'*(id(1)%255)"
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
print id(1)%255*":)"
would be one byte shorter.
\$\endgroup\$
Commented
Oct 2, 2017 at 12:06
print":)"*(Math.random()*255)
The initial solution was:
print":)"*(new Random().nextInt(256))
cat(rep(":)",runif(1)*256),sep="")
cat
and beat the answer I just posted. ;-)
\$\endgroup\$
:)
only.
\$\endgroup\$
Commented
Mar 6, 2014 at 12:13
cat(rep(":)",runif(1)*256),sep="")
, otherwise you will never get 255 smilies. See length(rep(":)",254.9999))
.
\$\endgroup\$
repeat $[RANDOM%256] echo ":)\c"
Output 1:
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
Output 2:
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
Output 1:
Output 2:
Output 3:
You never specified a distribution for the random variable denoting the number of times, so this outputs from the degenerate one with the entire mass on zero. This is fine under the definition of range where it is equal to the codomain of a function, rather than its image.
Alright, it's a huge cheat, but since the id(9)
code was successful despite not being guaranteed uniform, I figured this isn't entirely unclever.
Also compiles in C under some compilers. See discussion here.
Thanks to @grc and @DocMax for shaving 3 characters.
for(i=0|Math.random(t='')*256;i--;)t+=':)';alert(t)
4 Outputs:
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
i
to an int immediately. Using a condition like ~~i--
or --i>0
should save 2 chars. You can also save a char with Math.random(t='')
.
\$\endgroup\$
~~()
save 2 with 0|Math...
. And another if you move t=''
inside of the random()
call
\$\endgroup\$
alert(':)'.repeat(Math.random()*256))
.
\$\endgroup\$
Commented
Mar 6, 2014 at 7:49
repeat
method exists (experimental for now, but exists). Anyway, I think that you may post an entirely new answer by yourself for this. I will upvote it.
\$\endgroup\$
Commented
Mar 6, 2014 at 8:09
Ruby (25 Chars)
rand(256).times{$><<":)"}
Wanted to try my hands at ruby. What better way than a codegolf ;)
$><<":)"*rand(256)
?
\$\endgroup\$
q - 17 bytes
(2*1?255)[0]#":)"
or a second way:
(2*rand 255)#":)"
To mirror @Sven Hohenstein's more correct solution, added cat(<>,sep="")
:
cat(rep(':)',sum(sample(0:1,255,T))),sep="")
Including @Plannapus' suggestion (I'm an R user, not an R expert!):
cat(rep(':)',sample(0:255,1)),sep="")
Tested on R-Fiddle.
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
sample(0:255,1)
instead of sum(sample(0:1,255,T)))
?
\$\endgroup\$
Commented
Mar 6, 2014 at 13:05
print(":)"^rand(0:255))
Usage:
julia> print(":)"^rand(0:255))
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
julia> print(":)"^rand(0:255))
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
julia> print(":)"^rand(0:255))
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
Haskell (50)
fmap(\a->concat$replicate a":)")$randomRIO(0,255)
":):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)"
fmap(\a->concat$replicate a":)")$randomRIO(0,255)
":):):):):):):):):):):):):):):):):):):):):):):):):):):):)"
fmap(\a->concat$replicate a":)")$randomRIO(0,255)
":):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)"
concat.flip replicate":)"<$>randomRIO(0,255)
=D
\$\endgroup\$
main=
to it's beginning, which costs an extra 5.
\$\endgroup\$
#include<iostream>
int main(){int *a=new int;a+=2;*a%=256;std::cout<<*a;while(*a-->0)std::cout<<":)";}
:( I think I'll never beat other languages in golfing !
Anyway...OUTPUT
#1
:):):):):):):):):):):):):):):):):):):):):):)
#2
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
#3
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
int n=255;while(n--*Math.random()>0)System.out.print(":)");
Note that you asked for "shortest code", not shortest complete program. On each run of the loop, there is a 1/7036874417766
probability that the loop exits (see How many double numbers are there between 0.0 and 1.0?). To make this a more even distribution, simply do
int n=0;n+=Math.random()*256;while(n-->0)System.out.println(":)");
Sample run: http://ideone.com/ZLppjR
Output #1:
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
Output #2:
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
Output #3:
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
yes the outputs are identical. I'm not going to run the program until I get an output that is not identical; it would take too long.
Complete program (104 chars):
class c{public static void main(String[]a){int n=255;while(n--*Math.random()>0)System.out.print(":)");}}
Original method (92 chars):
String s="";for(int i=255;Math.random()*i-->0;)s+="x";System.out.print(s.replace("x",":)"));