# Avoid repeating letters between five simple programs

You're challenge is to write 5 different full programs for the 5 following tasks:

1. Print Hello, World!

2. Given an input with STDIN, output the factorial, you can assume that the input is an integer >= 0

3. Given an integer N, calculate the sum of the primes <= N

4. Given an input with STDIN, output the letters used in the input. For example: the input is Hello world, you need to output helowrd. Note that the output is in lowercase. You can assume that the input is always alphabetic with whitespaces, the whitespaces are ignored.

5. Output the following diamond exactly like this:

   *
***
*****
*******
*****
***
*


All these challenges are probably very easy, but there is a catch. Every letter you use cannot be used again in the other programs. This is not prohibited, but will give you a penalty of +8 bytes. For example, if this is your program for the first task:

print("Hello, World!");


Then you cannot use the following letters (in uppercase or lowercase form): p, r, i, n, t, h, e, l, o, w, d in the other programs. If you do have to use them, you can 'buy' each letter for 8 bytes. So if you want to use the letter l again in another program, you get a penalty of 8 bytes. After you have paid the penalty, you can use each letter as much as you want in this program. Other characters don't matter. Also, all 5 programs should be in the same language.

This is , so least amount of bytes wins!

• This is a slightly different spin on challenges we've already had, but not different enough for it to not to be a multi-dupe in my eyes. – Mego Oct 31 '15 at 21:08
• @Mego I'd vote to close this as a multi-duplicate without the restriction, but the restriction makes it a whole new game. – trichoplax Oct 31 '15 at 21:25
• If you use a given letter in 3 programs, do you pay the 8 byte penalty twice (16 bytes)? – trichoplax Oct 31 '15 at 21:26
• @trichoplax, yes you pay 16 bytes – Adnan Oct 31 '15 at 21:28
• @trichoplax Hardly. The existing solutions for the duped problems will still be competitive. The top solutions here will just be the concatenation of the duped questions' solutions, with a higher score from the penalty. – Mego Oct 31 '15 at 21:47

# CJam, 73 bytes

"Obkkh+'Phukc&"7f^
q~m!
ri){'j3+_3++~},:+
lS-el_&
4{_' *4@-Y*('**+}%_1>W%\+N*


Each line is a full program. Try them online: 1 | 2 | 3 | 4 | 5

### Letter map

 bc  f h  k   op    u       18
m   q            4
ij       r          17
e      l      s          7
n        w y   27


If you want (and each of your programs fits in a line), you can use this CJam program to create a letter map for your own submission.

• Proof that osascript wasn't built for this: Your entire submission is less than 2 of my programs. XD +1, nice job. – Addison Crump Nov 1 '15 at 14:28

## Pyth, 90 bytes

First attempt...

+"Hello, "+C87"orld!


.!Q


sf}TPTSvz


@G{rw0


"   *
***
*****
*******
*****
***
*


# osascript, 759 Bytes

I knew this was going to be a lot when I started. o-o

"Hello, World!"

I knew that it was going to be bad from this point.

Task 2: 64 + 8*4 = 96 Bytes

on run a
set o to 1
repeat a
set o to a*o
set a to a-1
end
o
end

Oh gawd.

Task 3: 170 + 8*13 = 274 Bytes

on run a
set o to 0
set t to false
repeat with i from 2 to a
set t to true
repeat with c from 2 to i-1
if i mod c=0 then set t to false
end
if t then set o to o+i
end
end

Dennis ≠ outgolfed.

Task 4: 225 + 8*13 = 329

on run a
set o to""
repeat with i in items of a
repeat with c in characters of i
if c is not in o then
if ASCII number of c<91 then
set o to o&(ASCII character of(ASCII number of c+32))
else
set o to o&c
end
end
end
end
o
end

...

"   *
***
*****
*******
*****
***
*"

So, yeah. I knew I was gonna lose from the start. But it was interesting, I'd be interested to know if there's a way to do this in fewer characters. Character map (as provided by Dennis):

   de  h   l  o  r    w     15
a cdef hi  lmnop rstu w    160
a  de        nop rstu       57
abcdef hi  lmnop rstu w    214
39
0

The character count above is slightly off - newlines made it have issues, as the newlines were uncounted.

NOTE: The reason for not using stuff like a's characters or the like is that the ' character has to be used when executing from the osascript command line. If I had used ', I'd have to use \' or something similar, which wouldn't have helped me at all. Also, it only recognizes " as string capturers, so I was kinda screwed there as well. But that was fun.

# NARS2000 APL, 144 bytes (85 characters)

## Task 1, 21 bytes (17 characters)

⎕←"Hello, World!"


## Task 2, 10 bytes (4 characters)

⎕←!⎕


## Task 3, 22 bytes (11 characters)

⎕←+/¯2π⍳2π⎕


## Task 4, 53 bytes (29 characters)

⎕←∪Q[26∣Q⍸⍞∩Q←⎕AV[97+⍳26]∪⎕A]


## Task 5, 38 bytes (24 characters)

⎕←" *"[1+4<∘.+⍨(⍳3),⊖⍳4]

• Are those actually full programs? I don't know NARS2000 (and it's not available on my platform), but all dialects I know require assigning to ⎕ to print outside a REPL. – Dennis Nov 1 '15 at 16:58
• @Dennis Sorry, forgot I was fiddling inside the REPL. – Oberon Nov 1 '15 at 17:12
• You're not allowed to output trailing spaces for the diamond. – lirtosiast Nov 2 '15 at 23:53

# Jelly, 46 bytes (non-competing)

“3ḅaė;œ»
Ɠ!
ÆRS
ɠQḲŒl
4Ḷ¤‘+¤ṖṚṭ×”*Fµ4Ḷṭ4ḶṚṖ¤F×⁶+⁸Y


Try it online! (Copy/paste each snippet)

Apparently, the restriction did not restrict golfing :) Just suggestions for the last one, of course, please.