text:
This Challenge Makes Cents
I know, the title cracks you up

Given an amount of money, output the fewest number of coins that make up that amount.
Examples
0.1
1 dime

0.01
1 penny

0.28
1 quarter 3 penny

0.56
2 quarter 1 nickel 1 penny

1.43
5 quarter 1 dime 1 nickel 3 penny

Spec

100 cents in a dollar.
The values of each type of coin is:

penny 1 cent
nickel 5 cents
dime 10 cents
quarter 25 cents

Built-ins which trivialize this task are not allowed.
I/O
Input is a decimal representing the dollar value of the total

No need to pluralize
Order: quarter -> penny
Output should be <#_of_coins> <coin type>
Separators: , or , (comma and a space) or

The only trailing whitespace allowed is a single trailing newline/space.

If there is zero of a coin type, that coin type should not be shown. E.g. 0.25 -> 1 quarter not 1 quarter 0 dime 0 nickel 0 penny

@VoteToClose no, but I'll allow commas as a seperaor

Last example is 1.43,  which is greater than 1

@LuisMendo oh whoops, the (less than 1) part shouldn't of been there. Forgot to remove that in the sandbox I guess

Is it okay if the output is 2 quarter(2 spaces)1 nickel 1 penny?

@CᴏɴᴏʀO'Bʀɪᴇɴ hm :\ I'm going to say no. Unnecessary whitespace is also extra bytes

Can we accept input in cent amount instead of dollar amounts?

@VoteToClose no. Though I don't think it'll be that hard to multiply by 100

Will input always be xxx.yy or do we need to handle xxx (whole dollars with no . and no cents)?

@DigitalTrauma 13.00 can be a possible input but the input will never be 13. I'll always have a decimal

are coins name all lowercase?

I get the feeling this affects a lot of answers here so I'll ask - is there a maximum on the input?

@Sp3000 the maximum input is your languages number (or closest alternative)'s max size

@Doᴡɴɢᴏᴀᴛ Does this mean that, if our language has arbitrary precision integers, then we can't evaluate the input as floating point/double due to precision loss?

@Sp3000 you can use anything as long as it works and doesn't violate any loopholes (this one addresses your question)

No dollar coins?

CJam, 60
q~e2i[25A5]{md}/]" quarterx dimex nickelx penny"'x/.+{0#},S*

This script seems to have alot of room for improvement but this is shorter than any so far.  This makes use of the built in "md" command which returns both the integer result of a division and the remainder.  It does the following:

reads input (if it were a function I guess you can remove q~ for two less characters)
multiples the input by 100 and converts it to an integer
performs "md" using [25 10 5] which results in the remainders on the stack
combines the numbers and coin names
removes the number and coin name if the former is 0
adds pre-number zeros

Try it here
prior versions:
q~e2i[25A5]{md}/]_:!:!" quarter x dime x nickel x penny"'x/.*.+e_0-
q~e2i[25A5]{md}/]_:!:!\" quarter x dime x nickel x penny"'x/.+.*

JavaScript ES6, 107 bytes
n=>((n*=100)/25|0)+` quarter ${(n%=25)/10|0} dime ${n%10/5|0} nickel ${n%5|0} penny`.replace(/ ?0 \S+/g,"")

Simple maths.

Nice job! I thought there was a closed-formula ish solution

? Doesn't this output the coin type if there are zero of that coin type ?

@Frentos no, there is a Regex at the end which removes coin types that have zero coins

@Doᴡɴɢᴏᴀᴛ: sorry, didn't realise the text area scrolled right in the absence of visual clues :-)

Do you need the |0 after the n%5?

@Neil I tried it without, and occasionally it gets dumb results like 3.000000000000012 penny

Python 2, 120 bytes
n=int(round(input()*100))
a=25
for b in"quarter","dime","nickel","penny":
 if n>=a:print"%d "%(n/a)+b,
 n%=a;a=40/a+5^12

Just to be safe, changed to something that definitely works to fix @Ogaday's comment, for now at least. I'm uncertain whether or not I need the int() as well, but I'm having trouble convincing myself that I don't.
print`n/a`+" "+b,

is an extra byte off, but prints an extra L for large inputs (although this code doesn't work for extremely large inputs anyway, due to float precision).

You just made all the time I spent improving my solution to outgolf Mego's go to waste. Good job though!

+1 - I wish I knew what magic you used to come up with a=40/a+5^12

@DigitalTrauma Tried a bunch of arithmetic operators, eg [x^k for x in [10, 5, 1]] and [k/y for y in [25, 10, 5]] for different k, then saw that two lists were offset by 5. Probably suboptimal, but I haven't had time to brute force.

This actually fails (for me at least) on inputs of 10.03 and 10.04. It's to do with Python's representation of floats and how it rounds them to ints. Try "print %d"%(10.03*100).

n=int(''.join(raw_input().split("."))) may work, but it's pretty verbose.

@Ogaday Ah, thanks - I initially had round, but wasn't sure whether I needed it, and had trouble finding a case where I did need it.

@Sherlock9 That wouldn't work for 0.1

dc, 104
Newlines added for "readability":
[dn[ quarter ]n]sq
[dn[ dime ]n]sd
[dn[ nickel ]n]sn
[d1/n[ penny ]n]sp
?A0*
25~rd0<qst
A~rd0<dst
5~rd0<nst
d0<p

dc: Now with Readability™

Retina, 97
Thanks (as always) to @randomra - saved 1 byte.
Assumes input is either in the form xxx.yy or xxx.y.
\..$
$&0
\.

.+
$0$*:
(:{25})+
$#1 quarter
(:{10})+
$#1 dime
(:{5})+
$#1 nickel
(:)+
$#1 penny

Try it online.

$& is the same as $0 so you can save a byte in $0.0 by $&0.

By inputing something like 0.9999999, the output is a little crazy

@PythonMaster I'll add support for that when the Fed starts minting 10 micropenny pieces ;-)

Vitsy, 110 100 97 bytes
Yeah, hold on, I'm still methodizing this.
aa**Dv52^1m([N' retrauq 'Z]v52^MDva1m([N' emid 'Z]vDvaM51m([N' lekcin 'Z]v5MD([N'ynnep 'Z]
/D1M-D
Explanation in soon-to-come verbose mode:
push a;
push a;
multiply top two;
multiply top two;
duplicate top item;
save top as temporary variable;
push 5;
push 2;
push second to top to the power of top;
push 1;
goto top method;
if (int) top is 0;
begin recursive area;
output top as number;
push " quarter ";
output stack as chars;
end recursive area;
save top as temporary variable;
push 5;
push 2;
push second to top to the power of top;
modulo top two;
duplicate top item;
save top as temporary variable;
push a;
push 1;
goto top method;
if (int) top is 0;
begin recursive area;
output top as number;
push " dime ";
output stack as chars;
end recursive area;
save top as temporary variable;
duplicate top item;
save top as temporary variable;
push a;
modulo top two;
push 5;
push 1;
goto top method;
if (int) top is 0;
begin recursive area;
output top as number;
push " nickel ";
output stack as chars;
end recursive area;
save top as temporary variable;
push 5;
modulo top two;
duplicate top item;
if (int) top is 0;
begin recursive area;
output top as number;
push " penny";
output stack as chars;
end recursive area;
:
divide top two;
duplicate top item;
push 1;
modulo top two;
subtract top two;
duplicate top item;
Try it online!

retrauq almost seems like a word...

The permalink isn't working

Fixed, sorry. Old code link. :P

LabVIEW, 62 LabVIEW Primitives
I created 2 arrays for the names and values and iterate through them from the top (index array with i) using a modulo operator (the R IQ thing). The remaining coins are passed into the shift register.
If the value is bigger than 0 I convert the number to string and concatenate the passed down string, the number and the name of the coin and put it back into the shift register.
I just realized my gif doesn´t show the false case but there is nothing to see anyway, it just passes through the string that came in.

How do "primitives" compare to bytes? Does "x primitives" beat "y bytes" when x<y? Just asking

You can check the link to see how primitives are counted. Giving size of labview code in byte would be kinda   useless, since an empty vi is already ~10kb big. By experience there are a few more primitives than bytes in a golfing language so this would be around 50-60 bytes in CJam or the like.

@LuisMendo We can't bound the information content of a LabView file above by one byte per primitive, so it would be unfair to count LabView at one byte per primitive.

@ThomasKwa tbh with a well made golfing language you probably could, each operation 1 byte 1 byte per wire for each input loops are 2-4 bytes for for and whiles are 3 primitives and so on

Java 8 lambda, 165 bytes
Expects input y as either double or float.
y->{int c,d=(int)(y*100);return(((c=d/25)>0)?c+" quarter ":"")+(((c=(d=d%25)/10)>0)?c+" dime ":"")+(((c=(d=d%10)/5)>0)?c+" nickel ":"")+(((d=d%5)>0)?d+" penny":"");}
So much ternary. ;-;

;-; What is that? Is that a wampa?

@beaker Crying.

I know it's been four years (lol), but here is 149 bytes. Summary of changes: d=(int)(y*100); to d=100;d*=y;; ((c=d/25)>0)?c+ to d/25>0?d/25+; d=d%25 to d%=25; (c=(d=d%10)/5) to (c=d%10/5); and ((d=d%5)>0)?d+ to d%5>0?d%5+.

JavaScript ES6, 202 200 bytes
I hope this can be golfed...
r=>eval('i=[.25,.1,.05,.01];v=[0,0,0,0];for(k=0;k<4;k++)for(;r>=i[k];v[k]++,r-=i[k],r=((r*100+.01)|0)/100);v.map((x,i)=>x?x+" "+"quarter0dime0nickel0penny".split(0)[i]:"").join` `.replace(/ +/g," ")')

Ungolfed code:
function m(r){
    i=[.25,.1,.05,.01]
    v=[0,0,0,0]
    for(k=0;k<4;k++)for(;r>=i[k];v[k]++,r-=i[k],r=((r*100+.01)|0)/100);
    return v.map((x,i)=>x?x+" "+"quarter0dime0nickel0penny".split(0)[i]:"").join(" ").replace(/ +/g," ");
}

MATL, 82 106 107
'%i quarter %i dime %i nickel %i penny'i[.25 .1 .05]"@2#\w]100*Yo5$YD'0 \S+ ?'[]YX

Try it at MATL Online!

I really need to include string compression in MATL

C, 147 144 142 140 bytes
a[]={25,10,5,1},m,i=0;f(float n){for(m=n*100;i<4;m%=a[i++])m/a[i]&&printf("%d %s ",m/a[i],(char*[]){"quarter","dime","nickel","penny"}[i]);}

Ungolfed with tests:
#include <stdio.h>

a[]={25,10,5,1},m,i=0;

f(float n)
{
    for(m=n*100;i<4;m%=a[i++])
        if(m/a[i])
            printf("%d %s ",m/a[i],(char*[]){"quarter","dime","nickel","penny"}[i]);
}

int main()
{
    float test[] = {.1, .01, .28, .56, 1.43};
    for(int j = 0; j < 5; i = 0)
    {
        f(test[j++]);
        printf("\n");
    }
}

Maybe try replacing char*[] with char**, int a[] with int*a, and put the m%=a[i++] in the last part of the for loop. Should save 4 bytes. Haven't tested it yet, so just try each of them.

@minerguy31 I wouldn't be able to use list initializers if I use pointers instead of arrays. Moved the m%=a[i++] bit though, thanks.

Also, you may be able to replace if(m/a[i]) with m/a[i]&& to save 2 more bytes.

Also try using "quarter\0dime\0nickel\0penny" in the printf. Each \0 terminates the string,saving 1 char each

@minerguy31 using string with \0 causes the program to crash. I'm not sure how iteration is supposed to work over such string anyway.

Japt, 77 bytes
` {U*=L /25|0} quÂòr {U%=25 /A|0} ÜX {U%A/5|0} Íõel {U%5|0} p¿ny` r" 0 %S+" x

Thankfully, all four coin names are compressable. The ¿ should be the literal byte 0x81. Test it online!

Just tried it with some random inputs, it's one cent off on 18.33: 73 quarter 1 nickel 2 penny. 73*.25 + 1*.05 + 2*.01 = 18.32 instead of 18.33.

APL (Dyalog Unicode), 185 176 bytes
{' '∘(1↓,(/⍨)1(⊢∨⌽)0,≠)⍕,⍉(z[1;]≠0)/z←'quarter' 'dime' 'nickel' 'penny',[0.5]⍨{(⌊(⍵÷25)),(⌊(25|⍵)÷10),(⌊(10|25|⍵)÷5),⌊5|⍵}⍵×100}

Try it online!
The decomposition is in two parts: Computation, and Formatting
Computation:
{(⌊(⍵÷25)),(⌊(25|⍵)÷10),(⌊(10|25|⍵)÷5),⌊5|⍵}⍵×100
{                                           }         A dfn that takes...
                                             ⍵×100    ...the input argument of the entire function, and multiplies by 100 to convert
                                                        from dollars-and-cents to cents, then generates a vector, consisting of ...
 (⌊(⍵÷25)),                                          ...the number of quarters, computed as the the round-down-to-integer of
                                                        the number of cents divided by 25, followed by...
           (⌊(25|⍵)÷10),                             ...the number of dimes, computed as the round-down-to-integer of the remainder of
                                                        the number of cents divided by 25, divided by 10, followed by...
                        (⌊(10|25|⍵)÷5),              ...the number of nickels, computed as the round-down-to-integer of the remainder
                                                        from dividing (the remainder of the number of cents divided by 25) by ten,
                                                        divided by five, followed by...
                                       ⌊5|⍵          ...the number of pennies, computed as the round-down-to-integer of the
                                                        remainder from dividing the number of cents by five.

Computation is complete, and gives a vector of coin counts; the remainder is formatting:
' '∘(1↓,(/⍨)1(⊢∨⌽)0,≠)⍕,⍉(z[1;]≠0)/z←'quarter' 'dime' 'nickel' 'penny',[0.5]⍨    Append the result of the computation to this expression
                                       'quarter' 'dime' 'nickel' 'penny'           Take a vector of coin names, and...
                                                                              ⍨    ...swap it with the computation result, then...
                                                                        ,[0.5]     ...append the two along a 'side-by-side' axis. This gives
                                                                                a matrix which, if printed out, would have the coin counts
                                                                                above the coin name.  Then...
                                    z←                                            ...assign it to a temporary variable, and...
                          (z[1;]≠0)                                               ...generate a vector of 1s and 0s such that the 0s in this
                                                                                vector are in the same position as any 0s in the computation, then...
                                   /                                              ...use that vector to compress out the columns in the matrix where the
                                                                                coin count is zero, then...
                         ⍉                                                        ...transpose the matrix along its main diagonal. This converts it to two
                                                                                columns; left is coin counts, right is coin names. Then...
                        ,                                                         ..."unravel" the matrix into a linear vector; the result now has the coin
                                                                                count followed by the coin name - but there will be too many spaces, so...
                      ⍕                                                          ...convert to a character representation instead of a vector of
                                                                                mixed objects, then...
' '               0,≠                                                            ...this is a fork, with left argument being the space all the way at the
                                                                                beginning (S), and right argument being the formatted string (F). It is
                                                                                interpreted as S 0 F , S ≠ F. S ≠ F generates a vector C of 0s and 1s,
                                                                                where the 0s are at the same positions as the spaces. S 0 F is a
                                                                                constant 0. 0 , C prepends a 0 to the vector C (C2). Then...
            1(⊢∨⌽)                                                               ...we "go up a level" and see a new fork, 1 (⊢∨⌽) C2. This is interpreted
                                                                                as S 1 F (which is constant 1) (⊢∨⌽) S C2 F (which is constant C2). The
                                                                                central (⊢∨⌽) is itself a fork with arguments 1 and C2, so is interpreted
                                                                                as (1⊢C2)∨(1⌽C2). Dyadic ⊢ is right-identity, or C2, and 1⌽C2 takes the
                                                                                zero at the beginning of C2 and moves it to the end (C3). ∨ is logical OR,
                                                                                so C2 OR C3 gives a vector C4 of 1s and 0s where the 0s are positioned to
                                                                                correspond with the first space of a pair of consecutive spaces. This...
       ,(/⍨)                                                                     ...becomes the right argument to /⍨ with the left argument being S , F.
                                                                                S , F is the formatted string with a space prepended (SF), so we now have
                                                                                SF /⍨ C4. ⍨ is an operator saying "swap the arguments of (in this case) /"
                                                                                so that we're really computing C4 / SF. Dyadic / with a left argument of
                                                                                1s and 0s is "compression"; it returns those elements of its right
                                                                                argument that corresponds to 1s in the left argument. So, where C4 has a 0,
                                                                                the corresponding character in SF is omitted. Since C4 only had 0s where
                                                                                there was a space immediately before another space, the result is the
                                                                                compression of all multi-space substrings to single spaces. Then...
     1↓                                                                          ...we drop the first character (a space) of the result. This gives us a string
                                                                                which contains no leading or trailing spaces, and no sequence of more than
                                                                                one space within the string.

05AB1E, 34 bytes
т*ò25‰`T‰`5‰`)“œ¤æáeàë×ä“#øʒнĀ}˜ðý

Outputs with spaces like the examples.
Try it online or verify all test cases.
Explanation:
т*              # Multiply the (implicit) input-decimal by 100
  ò             # Bankers-round this to the nearest integer (to both prevent floating point
                # inaccuracies, as well as removing the ".0" from the ouput-numbers)
   25‰          # Take the divmod-25
      `         # Push both values separated to the stack
       T‰       # Take the divmod 10 on the top value
         `      # Push both values separated to the stack
          5‰    # Take the divmod 5 on the top value
            `   # Push both values separated to the stack
             )  # Wrap all values on the stack into a list
“œ¤æáeàë×ä“     # Push dictionary string "quarter dime nickel penny"
           #    # Split it on spaces
            ø   # Zip/transpose, creating pairs with the earlier integer list
ʒ               # Filter this list by:
 н              #  Where the first item (the integer)
  Ā             #  Is not 0
}˜              # After the filter: flatten the list of pairs
  ðý            # And join this list with a space delimiter
                # (after which this is output implicitly as result)

See this 05AB1E tip of mine (section How to use the dictionary?) to understand why “œ¤æáeàë×ä“ is "quarter dime nickel penny".

Very good! Certainly beats the brute-force approach. As a 34 byte alternative, you can use a loop 521vy5*‰`}) instead of repeating divmod 25‰`T‰`5‰`).

JavaScript, 156 145 144 bytes
No match to ETHproduction's formula answer, but anyway...
function c(t){n=['quarter','dime','nickel','penny'];v=[.25,.1,.05,.01];s='';for(i in v){c=t/v[i]|0;if(c>0)s+=c+' '+n[i]+' ';t-=c*v[i];}return s}

This is one of my first rounds of golfs, so any improvements are highly appreciated! I already stole ETH's "xor trunc" -- sorry man, it was just too smart :-)
More readable:
function c(t)
{
  n = ['quarter', 'dime', 'nickel', 'penny'];
  v = [.25, .1, .05, .01];
  s = '';
  for(i in v)
  {
    c = t/v[i]|0;
    if(c>0) s += c+' '+n[i]+' ';
    t -= c*v[i];
  }
  return s
}

Note: While testing I realised that JavaScript (at least on my machine?) divides 1.13 / 0.01 to 1.12999..., making my (and probably all other JS submissions) not work 100% properly...

I don't think you need the very last semicolon.

Kotlin, 147 bytes
{listOf("quarter" to 25,"dime" to 10,"nickel" to 5,"penny" to 1).fold((it*100).toInt()){d,(n,a)->val z=d/a
if(z>0){print("$z $n ")
d-(z*a)}else d}}

Beautified
{
    listOf(
            "quarter" to 25,
            "dime" to 10,
            "nickel" to 5,
            "penny" to 1).fold((it * 100).toInt()) { d, (n, a) ->
        val z = d / a
        if (z > 0) {
            print("$z $n ")
            d - (z * a)
        } else d
    }
}

Test
import java.io.ByteArrayOutputStream
import java.io.PrintStream

var f:(Double)->Unit =
{listOf("quarter" to 25,"dime" to 10,"nickel" to 5,"penny" to 1).fold((it*100).toInt()){d,(n,a)->val z=d/a
if(z>0){print("$z $n ")
d-(z*a)}else d}}

val TEST = listOf(
        0.1 to "1 dime",
        0.01 to "1 penny",
        0.28 to "1 quarter 3 penny",
        0.56 to "2 quarter 1 nickel 1 penny",
        1.43 to "5 quarter 1 dime 1 nickel 3 penny"
)

fun main(args: Array<String>) {
    val temp = ByteArrayOutputStream()
    System.setOut(PrintStream(temp))
    for ((input, output) in TEST) {
        temp.reset()
        f(input)
        println()
        val text = temp.toString().trim()
        if (text != output) {
            throw AssertionError("$input '$output' != '$text'")
        }
    }
}

TIO
TryItOnline

T-SQL, 181 bytes
I added some linebreaks to make it readable
DECLARE @2 decimal(10,2)=1.43

DECLARE @ INT=@2*100
SELECT string_agg(left(nullif(c,0),99)
+' '+trim(substring('quarterdime    nickle  penny',b*8,8)),' ')
FROM(values(0,@/25),(1,@%25/10),(2,@%25%10/5),(3,@%5))p(b,c)

Try it online

PowerShell, 133 131 130 123 110 bytes
-8 bytes by snagging several tricks from mazzy's answer
-13 bytes thanks directly to mazzy

$n=100*"$args"
''+(25,10,5,1|%{($y=$n/$_-replace'\..*');(echo quarter dime nickel penny)[$i++];$n%=$_}|?{+$y})

Try it online!
Each iteration (i.e. 25,10,5,1) generates two lines of output through the pipeline: the number and the coin size. |?{+$y} is a where clause that filters out both generations if $y is 0, which is the truncated result of $n/$coin_size.

-replace gives a shorter code Try it online!

PowerShell, 120 118 115 bytes
Inspired by Veskah
$n=100*"$args"
''+(25,10,5,1|%{for($i=0;($n-=$_)-ge0){++$i}$n+=$_
$i;(echo quarter dime nickel penny)[$p++]}|?{$i})

Try it online!

Julia, 128 127 bytes

-1 byte: @MarcMush

readable version:
!s=(
  x=floor(Int,100s);
  join("$v $w "^(v>0) for (v,w)=zip(
      [25,10,5,1].|>u->(t=x÷u;x=x%u;t),"quarter dime nickel penny"|>split
    )
  )
)

Attempt This Online!

-1 byte: floor(Int,x)

Python 2, 167  161 bytes
Update 1: Stole Sp3000's idea to use input() and make my code a script instead of a function.
a=input()*100;k={25:0,10:0,5:0,1:0}
for i in k:k[i]=a//i;a%=i
print' '.join(['%d %s'%(k[x],{25:'quarter',10:'dime',5:'nickel',1:'penny'}[x]) for x in k if k[x]])

Perl 5 - 128 124 bytes
I guess this can be re-written to be much shorter but I really can't see it.
$s=<>*100;@v=($s/25,$s%2.5,$s%25%10/5,$s%250%5);map{$l=int($_);print$l.$".qw(quarter dime nickel penny)[$i].$"if$l>0;$i++}@v

EDIT: Just a math trick to save 4 chars.

Perl 6, 96 bytes
$/=get;put map {$_=Int($//$^a);$/%=$a;"$_ $^b" if $_},<.25 quarter .1 dime .05 nickel .01 penny>

$/ = get; # set $/ to the input

# print the following list with spaces between
# and a newline at the end
put map {
  # the parameters to this block are $a, and $b
  # which are declared as placeholder parameters $^a, and $^b

  $_ = Int( $/ / $^a ); # set $_ to the count of the current coin

  $/ %= $a;             # set $/ to the modulus of itself and the current coin

  "$_ $^b" if $_        # return a string if $_, otherwise return Empty
},
<
  .25 quarter
  .1  dime
  .05 nickel
  .01 penny
>

Usage:
for amount in  0.1  0.01  0.28  0.56  1.43; do
  echo $amount | perl6 -e'…';
done

1 dime
1 penny
1 quarter 3 penny
2 quarter 1 nickel 1 penny
5 quarter 1 dime 1 nickel 3 penny

C, 162 bytes
Unfortunately, doesn't work without the #include.
#include <stdlib.h>
i,a[]={25,10,5,1};main(c,v)char**v;{for(c=atof(v[1])/.01;c;c%=a[i++])c/a[i]?printf("%d %s ",c/a[i],"quarter\0dime\0   nickel\0 penny"+8*i):0;}

Ungolfed
#include <stdlib.h>

i,a[]={25,10,5,1}; /* loop index, coin values */

main(c,v) char**v;
{
    /* Get dollar amount from command line, convert to pennies */
    for (c=atof(v[1])/.01;c;c%=a[i++]) /* loop while still change... */
    {
        c/a[i] /* if there are coins at this index... */
            ? printf("%d %s ", c/a[i], "quarter\0dime\0   nickel\0 penny"+8*i) /* print out how many */
            : 0;
    }
}

Lua 5.3, 141 139 132 131 bytes
Sort of based on Sp3000's Python answer, but with my own magic formula.
n=.5+100*io.read'n'a=25
for s in("quarter dime nickle penny "):gmatch".- "do
_=n<a or io.write(s,~~(n//a)," ")n=n%a
a=35%a|#s%2
end

Edit -- improved the a formula. Previously it was a=a*3%13~#s%4.
Edit 2 -- previously I was using math.ceil to round and convert to integer. Now I am reusing // to round and adding ~~ to convert to integer.
Edit 3 -- shaved a character by changing the pattern from "%w+ " to ".- ".

K (oK), 95 78 bytes
Solution:
{" "/,/`quarter`dime`nickel`penny{("";$y,x)y>0}'(-c,1)!'{y!x}\x,c:25 10 5}100*

Try it online!
Example:
{" "/,/`quarter`dime`nickel`penny{("";$y,x)y>0}'(-c,1)!'{y!x}\x,c:25 10 5}100*0.92
"3 quarter 1 dime 1 nickel 2 penny"
{" "/,/`quarter`dime`nickel`penny{("";$y,x)y>0}'(-c,1)!'{y!x}\x,c:25 10 5}100*0.95
"3 quarter 2 dime"

Explanation:
Modulo the input by each coin, then divide coins by the result.
Feed each result along with the name of the coin into a function, returning the string value of both if number of coins is non-zero.
Flatten everything down and join together with whitespace.

Swift, 164 bytes
Assuming input is i
let m=[("quarter",25),("dime",10),("nickel",5),("penny",1)]
var b=Int(i*100)
print(m.reduce(""){o,t in
let(n,v)=t,
x=Int(b/v)
b-=x*v
return x==0 ?o:o+"\(x) \(n) "})

Try it

Mathematica 30 bytes
This submission may not qualify, as it makes use of a readily available built-in!  But some may find it useful for understanding the connection to Frobenius equations.
The task can be understood as a search for all solutions to the Frobenius equation, 25q+10d+5n+p=t, where q, d, n, p, and t, represent quarters, dimes, nickels, pennies, and total, respectively.
FrobeniusSolve[{25,10,5,1},#]&

The Frobenius equation 25q+10d+5n+p=100 represents all cases that sum to 100 cents.
The first solution, below, represents 100 pennies; the second solution represents 1 nickel and 95 pennies. And so on...
FrobeniusSolve[{25,10,5,1},100]

{{0, 0, 0, 100}, {0, 0, 1, 95}, {0, 0, 2, 90}, {0, 0, 3, 85}, {0, 0, 4, 80}, {0, 0, 5, 75}, {0, 0, 6, 70}, {0, 0, 7, 65}, {0, 0, 8, 60}, {0, 0, 9, 55}, {0, 0, 10, 50}, {0, 0, 11, 45}, {0, 0, 12, 40}, {0, 0, 13, 35}, {0, 0, 14, 30}, {0, 0, 15, 25}, {0, 0, 16, 20}, {0, 0, 17, 15}, {0, 0, 18, 10}, {0, 0, 19, 5}, {0, 0, 20, 0}, {0, 1, 0, 90}, {0, 1, 1, 85}, {0, 1, 2, 80}, {0, 1, 3, 75}, {0, 1, 4, 70}, {0, 1, 5, 65}, {0, 1, 6, 60}, {0, 1, 7, 55}, {0, 1, 8, 50}, {0, 1, 9, 45}, {0, 1, 10, 40}, {0, 1, 11, 35}, {0, 1, 12, 30}, {0, 1, 13, 25}, {0, 1, 14, 20}, {0, 1, 15, 15}, {0, 1, 16, 10}, {0, 1, 17, 5}, {0, 1, 18, 0}, {0, 2, 0, 80}, {0, 2, 1, 75}, {0,2, 2, 70}, {0, 2, 3, 65}, {0, 2, 4, 60}, {0, 2, 5, 55}, {0, 2, 6, 50}, {0, 2, 7, 45}, {0, 2, 8, 40}, {0, 2, 9, 35}, {0, 2, 10, 30}, {0, 2, 11, 25}, {0, 2, 12, 20}, {0, 2, 13, 15}, {0, 2, 14, 10}, {0, 2, 15, 5}, {0, 2, 16, 0}, {0, 3, 0, 70}, {0, 3, 1, 65}, {0, 3, 2, 60}, {0, 3, 3, 55}, {0, 3, 4, 50}, {0, 3, 5, 45}, {0, 3, 6, 40}, {0, 3, 7, 35}, {0, 3, 8, 30}, {0, 3, 9, 25}, {0, 3, 10, 20}, {0, 3, 11, 15}, {0, 3, 12, 10}, {0, 3, 13, 5}, {0, 3, 14, 0}, {0, 4, 0, 60}, {0, 4, 1, 55}, {0, 4, 2, 50}, {0, 4, 3, 45}, {0, 4, 4, 40}, {0, 4, 5, 35}, {0, 4, 6, 30}, {0, 4, 7, 25}, {0, 4, 8, 20}, {0, 4, 9, 15}, {0, 4, 10, 10}, {0, 4, 11, 5}, {0, 4, 12, 0}, {0, 5, 0, 50}, {0, 5, 1, 45}, {0, 5, 2, 40}, {0, 5, 3, 35}, {0, 5, 4, 30}, {0, 5, 5, 25}, {0, 5, 6, 20}, {0, 5, 7, 15}, {0, 5, 8, 10}, {0, 5, 9, 5}, {0, 5, 10, 0}, {0, 6, 0, 40}, {0, 6, 1, 35}, {0, 6, 2, 30}, {0, 6, 3, 25}, {0, 6, 4, 20}, {0, 6, 5, 15}, {0, 6, 6, 10}, {0, 6, 7, 5}, {0, 6, 8, 0}, {0, 7, 0, 30}, {0, 7, 1, 25}, {0, 7, 2, 20}, {0, 7, 3, 15}, {0, 7, 4, 10}, {0, 7, 5, 5}, {0, 7, 6, 0}, {0, 8, 0, 20}, {0, 8, 1, 15}, {0, 8, 2, 10}, {0, 8, 3, 5}, {0, 8, 4, 0}, {0, 9, 0, 10}, {0, 9, 1, 5}, {0, 9, 2, 0}, {0, 10, 0, 0}, {1, 0, 0, 75}, {1, 0, 1, 70}, {1, 0, 2, 65}, {1, 0, 3, 60}, {1, 0, 4, 55}, {1, 0, 5, 50}, {1, 0, 6, 45}, {1, 0, 7, 40}, {1, 0, 8, 35}, {1, 0, 9, 30}, {1, 0, 10, 25}, {1, 0, 11, 20}, {1, 0, 12, 15}, {1, 0, 13, 10}, {1, 0, 14, 5}, {1, 0, 15, 0}, {1, 1, 0, 65}, {1, 1, 1, 60}, {1, 1, 2, 55}, {1, 1, 3, 50}, {1, 1, 4, 45}, {1, 1, 5, 40}, {1, 1, 6, 35}, {1, 1, 7, 30}, {1, 1, 8, 25}, {1, 1, 9, 20}, {1, 1, 10, 15}, {1, 1, 11, 10}, {1, 1, 12, 5}, {1, 1, 13, 0}, {1, 2, 0, 55}, {1, 2, 1, 50}, {1, 2, 2, 45}, {1, 2, 3, 40}, {1, 2, 4, 35}, {1, 2, 5, 30}, {1, 2, 6, 25}, {1, 2, 7, 20}, {1, 2, 8, 15}, {1, 2, 9, 10}, {1, 2, 10, 5}, {1, 2, 11, 0}, {1, 3, 0, 45}, {1, 3, 1, 40}, {1, 3, 2, 35}, {1, 3, 3, 30}, {1, 3, 4, 25}, {1, 3, 5, 20}, {1, 3, 6, 15}, {1, 3, 7, 10}, {1, 3, 8, 5}, {1, 3, 9, 0}, {1, 4, 0, 35}, {1, 4, 1, 30}, {1, 4, 2, 25}, {1, 4, 3, 20}, {1, 4, 4, 15}, {1, 4, 5, 10}, {1, 4, 6, 5}, {1, 4, 7, 0}, {1, 5, 0, 25}, {1, 5, 1, 20}, {1, 5, 2, 15}, {1, 5, 3, 10}, {1, 5, 4, 5}, {1, 5, 5, 0}, {1, 6, 0, 15}, {1, 6, 1, 10}, {1, 6, 2, 5}, {1, 6, 3, 0}, {1, 7, 0, 5}, {1, 7, 1, 0}, {2, 0, 0, 50}, {2, 0, 1, 45}, {2, 0, 2, 40}, {2, 0, 3, 35}, {2, 0, 4, 30}, {2, 0, 5, 25}, {2, 0, 6, 20}, {2, 0, 7, 15}, {2, 0, 8, 10}, {2, 0, 9, 5}, {2, 0, 10, 0}, {2, 1, 0, 40}, {2, 1, 1, 35}, {2, 1, 2, 30}, {2, 1, 3, 25}, {2, 1, 4, 20}, {2, 1, 5, 15}, {2, 1, 6, 10}, {2, 1, 7, 5}, {2, 1, 8, 0}, {2, 2, 0,  30}, {2, 2, 1, 25}, {2, 2, 2, 20}, {2, 2, 3, 15}, {2, 2, 4, 10}, {2, 2, 5, 5}, {2, 2, 6, 0}, {2, 3, 0, 20}, {2, 3, 1, 15}, {2, 3, 2, 10}, {2, 3, 3, 5}, {2, 3, 4, 0}, {2, 4, 0, 10}, {2, 4, 1, 5}, {2, 4, 2, 0}, {2, 5, 0, 0}, {3, 0, 0, 25}, {3, 0, 1, 20}, {3, 0, 2,  15}, {3, 0, 3, 10}, {3, 0, 4, 5}, {3, 0, 5, 0}, {3, 1, 0, 15}, {3,  1, 1, 10}, {3, 1, 2, 5}, {3, 1, 3, 0}, {3, 2, 0, 5}, {3, 2, 1, 0}, {4, 0, 0, 0}}

Pxem (ABORT_ILLEGAL_INTEGER=0), 139 bytes (filename only).
Backslash followed by four-digit of octet character means a character with the codepoint.
Also this uses a implementation-defined feature that "pushes zero for non-integer input for ._", which is adopted from nk.'s pxemi.7z (though the implementation is terrible).
._\0012.!.i.s.i0.-.+\0012.!._.+.c\0030.x.c\0031.$.n\0031.%.t quarter .p.mBB.a.c\0011.x.c\0012.$.n\0012.%.t dime .p.mBB.a.c\0004.x.c\0005.$.n\0005.$.t nickel .p.mBB.a.c.w.n penny.p.d.a

Usage

Full program.
stdin/stdout.
Input shall be a line and shall match this POSIX ERE: ^[0-9]+\.[0-9][0-9]?$

Try it online!

TODO. Imitate my post from BF instruction decision problem

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Generate 100 Java Tuple classes
Write a script that writes to standard output, or your language's equivalent, 100 lines of (valid) Java code that begins with:
class Tuple1 {public Object _0;}
class Tuple2 {public Object _0,_1;}
class Tuple3 {public Object _0,_1,_2;}
class Tuple4 {public Object _0,_1,_2,_3;}
class Tuple5 {public Object _0,_1,_2,_3,_4;}
class Tuple6 {public Object _0,_1,_2,_3,_4,_5;}
class Tuple7 {public Object _0,_1,_2,_3,_4,_5,_6;}
class Tuple8 {public Object _0,_1,_2,_3,_4,_5,_6,_7;}
class Tuple9 {public Object _0,_1,_2,_3,_4,_5,_6,_7,_8;}
class Tuple10 {public Object _0,_1,_2,_3,_4,_5,_6,_7,_8,_9;}
class Tuple11 {public Object _0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10;}
class Tuple12 {public Object _0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11;}

The last line should begin with class Tuple100.
This is code-golf, so the shortest code in bytes wins!

I accept the challenge! In fact, I'm going to do this in Java!

Can I write a function or does it have to be a full program?

I'm new to the site so asked for a script, but I've been hearing it's customary to allow functions, and that makes a lot of sense for Java, to avoid public static void main(String[] args) so definitely give a function if you like.

Great! Thank you Ray!

It's not anywhere near small enough, but I think this a perfect place to share my n-tuple generator I wrote in Java: https://github.com/kenzierocks/Tuplocity. It generates fully generic tuples!

Unfortunately, this cannot be considered valid Java code, due to Java's (somewhat annoying) restriction that each class be declared in its own file.  Unless they're nested inner-classes, I suppose, but that severely limits the usefulness of this sort of construction...

The code in the question compiles fine for me. Java allows multiple top-level classes per file but only one public top-level class. BTW, the generated Java code is not intended to be useful at all; it was taken from a tweet on a parody account. But the code does compile---try it. :)

Be sure to edit the question to indicate that functions are allowed!

I can do this, but can you tell me what is customary here please? (1) A function producing a string that has newlines, (2) a function that writes to stdout as a side effect, or (3) both 1 and 2?

Output the same text or the same code? Is it ok to change spacing or adding comments inside of it?

That Java isn't perfectly golfed. You can remove the space after TupleX.

The Java code is not supposed to be golfed, The challenge was to write a golfed program to generate the given code.

Jolf, 42 bytes
Do I get bonus points for beating Jelly with the best score ever? Contains unprintables, so you may want to try it online here. I replaced the unprintables with their respective alt index for readability.
‼Μz~1d"Ξ/êί Tuple% {Ξ0î⌂ Ξ2Qμ_ %;}"HRzH",_

Explanation
‼Μz~1d"Ξ/êί Tuple% {Ξ0î⌂ Ξ2Qμ _%;}"HRzH",_
 Μz~1d                                     map the range 1..100 with the following function
      "                                    begin a string
       Ξ/êί                                short for "class"
            Tuple% {               H       string interpolate H (current number)
                    Ξ0î⌂ Ξ2Qμ              short for "public Object"
                              _%;}" RzH    string interpolate with a range from 1..H joined
                                       ",_  by the string ",_" (auto-closed quotes)

I suppose. Is it proper on this site to change the accepted answer if a new score comes in later?

@RayToal Yes, it is proper and even suggested to do so.

What's the character encoding for this?   I know golfing languages frequently use their own encoding, but I can't see which encoding jolf could be using.  I realize this is old.

@recursive The greek ISO-8859-7, this one: https://en.wikipedia.org/wiki/ISO/IEC_8859-7

vim 56 54 keystrokes
iclass Tuple1 {public Object _0;}<esc>qyYp<C-a>$y2bPr,<C-a>q98@y

Since V is backwards compatible, you can Try it online!
This is the perfect task for vim! I might golf it a little bit more later. Also note that <c-a> means Control-A, and it counts as one keystroke.
Explanation:
iclass Tuple1 {public Object _0;}<esc>         'Enter the starting text

qy                          'Start recording in register y
  Yp                        'Yank the current line, the print on the line below
     <C-a>                  'Increment the next digit to occur by one
          $                 'Move to the end of this line
           y2b              '(yank) 2 words (b)ack. This will grab '_0;'
              P             'Print the previously yanked word before the cursor.
               r,           '(r)eplace the char under the cursor with a comma.
                 <c-a>q     'Increment the current digit, then stop recording
                       99@y 'Playback macro 'y' 99 times.

If you count Control-A as one keystroke, you could substitute yy by Y.

@Seeq Haha, I just realized the same thing and edited it in right before I saw your comment. Great minds think alike!

This seems to be going to class Tuple101, not class Tuple100 as the question asks.

@numbermaniac Simple off-by-one error. Thanks for pointing that out! Fixed now :)

@James your one line answer says 98@y but your explanation still has 99@y and talks about repeating 99 times.

Jelly, 44 bytes
R’j“,_”
“¤>%,oỊȤʠ“ØụĊ5D³ṃṠɼQ»j;Ç;“;}¶”
ȷ2RÇ€

My first Jelly answer. Try it online!

Am I doing it wrong or does this just output a giant list instead of a string?

@DenkerAffe It seems to be working now! There was a temporary bug in Jelly. (Also, the link was to an old version of my solution, so I've updated it.)

Nice... as of now it's 9 bytes shorter than the CJam solution!

Java, 160, 125 Bytes
Thanks to @DenkerAffe,  @Denham Coote and  @Mathias Ettinger for the improvements.
Java writing java( because someone had to!)
void z(){String s="_0";for(int i=1;i<101;){System.out.println("class Tuple"+(i++)+" {public Object "+s+";}");s+=",_"+i;}}

And the un-golfed version
void z(){
    String s = "_0";
    for(int i = 1 ;i < 101;){
        System.out.println("class Tuple" + (i++) + " {public Object "+ s + ";}");
        s += ",_" + i;
        }
    }

Welcome to Programming Puzzles & Code Golf! Unless stated otherwise in the challenge, you can alwasy use functions instead of full programs. So  you should use a Java8-lambda (which returns the result) here to save you all the public static void main...stuff.

Welcome to PPCG. This answer includes an extra comma at the end of the Object declarations... class Tuple1 {public Object _0,;} class Tuple2 {public Object _0,_1,;}

You can save a further 3 bytes by incrementing your loop counter in the sysout (++i) instead of (i+1) and removing i++ from the for loop setup

You should start your String s = "_0" so you can s += ",_" + i and save a byte. It will also solve the problem with the trailing coma. You’ll need to start the for loop going from 1 to less than 101 and will be able to remove an extra 4 bytes by converting the (i+1) in your output message to only i. Obviously, you’ll need to print before incrementing s.

Thanks, have done all these things, and am definitely going to have a gander at java8-lambda.

I know it's been more than 1.5 years, but it's currently giving incorrect results.. Your method goes from _0, to _2, instead of _1. You can fix this, and golf it by 5 bytes at the same time, like this: void z(){String s="_0";for(int i=1;i<101;s+=",_"+i++)System.out.println("class Tuple"+i+" {public Object "+s+";}");}. And you could golf it more with Java 8 using ()-> instead of void z() or better yet, v-> instead (because an empty unused parameter is allowed). Here is how to do this (resulting in 111 bytes).

Pyth, 53 50 48 bytes
VS100%." }SüÆðQ´Ó3Ô«%&a´4UçõÛ"[Nj",_"UN

Try it online!
Straightforward iteration over range(1,100) and building the corrosponding string from a packed string through formatting it.
Explanation

VS100%." }SüÆðQ´Ó3Ô«%&a´4UçõÛ"[Nj",_"UN

VS100                                     # Iterate over range(1,100)
     %." }SüÆðQ´Ó3Ô«%&a´4UçõÛ"            # Unpack the string and format it
                              [           # List for formatting arguments
                               N          # Number of the Tuple
                                j    UN   # Join Object numbers...
                                 ",_"     # ...on the seperator ",_"

The unpacked string is class Tuple%i {public Object _%s;}

Two golfs: Use s[ instead of all of those +. [ makes an arbitrary length list, and s concatenates it. Also, since you want [1, 2, ... 100], not [0, 1, .. 99], use VS100, and you won't need either h.

@isaacg Thanks, did not know about the S-trick! :) Was already sitting on getting rid of all the ++++, I knew there is a better way.

You;re welcome. By the way, you seem to have added a trailing " unnecessarily.

@isaacg Thanks for the hint. :) I removed it in my initial solution, but somehow it got back in when I edited in your suggestions :O

@isaacg Is there any reason j<str><int> doesn't U?

No, not really. Will do.

CoffeeScript, 86 84 bytes
console.log "class Tuple#{i} {public Object _#{[0...i].join ',_'};}"for i in[1..100]

View the solution online

Welcome to PPCG! Just to let you know edits that improve answers are generally frowned (and should be rejected if they end up in the review queue). So it's more likely that people will comment with suggestions, so you can review them yourself. :) (As for actual tips I think you need neither the space in front of for nor the one after in.)

Does console.log" work? (Don't know coffee script, that's a general trick.

No, as in, removing the space. :P I know it exists, I just don't know if that's valid syntax.

@VoteToClose I tried that earlier (using the live transpiler on coffeescript.org and it didn't work).

@VoteToClose Oh sorry didn't see that. No. somehow the space is required by the grammar, but it is not exactly clear to me why (yet). Spacing matters a lot in CoffeeScript, for instance, x? y:z is completely different from x ? y:z. You can say console.log?"hello" but not console.log"hello". Significant whitespace. Sometimes nice, sometimes weird.

You can usually use functions for in- and output. So an anonymous lambda which implicitly returns the string might save you some bytes.

Oh-I didn't see that on either the site tour or the help center. So rather than requiring writing lines to stdout, is it customary to ask for a "function producing a string with newlines in it?" And if a function, can it not also be an expression generating the string without being the body of an anonymous function? Thanks for the patience and the tips; I'm looking to learn the customs here. If the custom is "stdout OR function OR expression" that's fine, but then should I edit the question accordingly?

Batch, 128 bytes
@set m=_0
@for /l %%t in (1,1,100)do @call:b %%t
@exit/b
:b
@echo class Tuple%1 {public Object %m%;}&set m=%m%,_%1

Edit: Saved 10 bytes thanks to @Bob. Saved 1 byte thanks to @EʀɪᴋᴛʜᴇGᴏʟғᴇʀ.

I always get really happy to see batch on code golf, also, instead of using @ everywhere, you could redirect output to append to a file called x and use that as output

@DennisvanGils Sadly commands get echoed to standard output.

Eliminated enabledelayedexpansion for 117 bytes: https://gist.github.com/Elusive138/4cea555114a979954dcb -- if you don't mind the console window closing you can save two more by removing the /b arg from exit.

@Neil lol okay so I just tried running it and now I realize what you did. Very clever.

At beginning, use @echo off

@ElliotA. Why? That would waste 11 bytes.

Remove the other @'s, and :b doesn't print to the display.

@ElliotA. That still leaves me 6 bytes down...

Oracle SQL 9.2,  138 137 Bytes
SELECT REPLACE('class Tuple'||LEVEL||' {public Object'||SYS_CONNECT_BY_PATH(LEVEL-1,',_')||';}','t,','t ')FROM DUAL CONNECT BY LEVEL<101;

@Peter Thanks for pointing the 0/1 mistake.
The query use the CONNECT BY CLAUSE of hierarchical query to generate 100 rows.
The LEVEL pseudocolumn contains the row number of each row.
SYS_CONNECT_BY_PATH concatenate the first parameter, the row number, of each row, and use the second parameter as the separator.

please add some explanation

Clever :) This starts with Object _1 instead of Object _0, so that will take another two bytes (-1). However, the _ can be added to the char of SYS_CONNECT_BY_PATH instead of concatenating, reducing it by two those bytes again: REPLACE('class Tuple'||LEVEL||' {public Object'||SYS_CONNECT_BY_PATH(LEVEL-1,',_')||';}','t,_','t _')

Powershell - 65 bytes
(Amended in response to comment)
All credit to TimmyD
1..100|%{"class Tuple$_ {public Object _$(0..($_-1)-Join",_");}"}

Why the vote down? (Please note this is my first ever post, not a great welcome?)

Retina, 80 79 bytes
Byte count assumes ISO 8859-1 encoding.
100$*1
1
class Tuple11$` {public Object 1$`}¶
1(?<= (1+))
_$1,
1(1)*
$#1
,}
;}

Try it online!

Perl 6, 65 bytes
say "class Tuple$_ \{public Object _{join ',_',^$_};}" for 1..100

APL (Dyalog Unicode), 66 bytes
↑{∊'class Tuple'(⍕1+⍵)' {public Object _0'(',_'∘,∘⍕¨⍳⍵)';}'}¨0,⍳99

Try it online!
Explanation:
↑{∊'class Tuple'(⍕1+⍵)' {public Object _0'(',_'∘,∘⍕¨⍳⍵)';}'}¨0,⍳99
                                                             0,⍳99⍝ Numbers 0-99
                                                            ¨     ⍝ map to dfn
↑                                                                 ⍝ mix the result
  ∊'...'(⍕1+⍵)'...'                    ⍝ join the class header, tuple name (index + 1)
                                       ⍝ and the first tuple element.
                   (',_'∘,∘⍕¨⍳⍵)       ⍝ numbers from 1 to ⍵ prepended with ',_'
                                ';}'   ⍝ finish the class declaration

Tradfn(-2)

64

@Calculuswhiz fair point, fixed.

use the right ⎕io and save a byte: ↑{∊⍕¨'class Tuple'⍵' {public Object '(1↓∊',_'∘,¨⍕¨⍳⍵)';}'}¨1+⍳100

even shorter: {∊⍕¨'class Tuple'⍺' {public Object '(1↓∊',_'∘,¨⍕¨⍳⍺)';}'}⌸1+⍳10

R - 199 132 123 118 bytes
Version 4
p=paste0;for(i in 1:10)cat(p("class Tuple",i," {public Object ",toString(sapply(0:(i-1),function(x)p("_",x))),";}\n"))

Version 3
p=paste0;for(i in 1:8)cat(p("class Tuple",i," {public Object ",p(sapply(0:(i-1),function(x)p("_",x)),collapse=","),";}\n"))

Version 2
p=paste0;for(i in 1:100)cat(p("class Tuple",i," {public Object ",p(sapply(0:(i-1),function(x)p("_",x)),collapse=","),";}"),sep="\n")

Version 1
for (i in 1:100){
  foo <- paste0("class Tuple", i, " {public Object ")
  for (j in 0:(i - 1)){
    foo <- if (j < (i - 1)) paste0(foo, "_", j, ",") else paste0(foo, "_", j, ";}")
  }
  print(foo)
}

Welcome to Programming Puzzles & Code Golf! Since this is a code golf competition, you'll want to make your code as short as possible. You could start by shortening variable names to a single character each, removing whitespace, and using = for assignment rather than <-.

144 bytes: for(i in 1:100){f=(p=paste0)("class Tuple",i," {public Object ");for(j in 0:(i-1))f=if(j<i-1)p(f,"_",j,",")else p(f,"_",j,";}");cat(f,sep="\n")}

No problem. :) Also, you don't need to keep track of your versions in the post body since the revision history is accessible via the link that says "edited X minutes ago."

(though it may be worthwhile to give some indication, either in your edit summaries or in the post what you changed with each revision so that others could learn from your revision process)

Ruby, 71 bytes
100.times{|i|puts"class Tuple#{i+1} {public Object _#{[*0..i]*',_'};}"}

TIL [*0..i]*',_' wow

Java, 103 bytes
s->{s="_0";for(int i=0;i++<100;s+=",_"+i)System.out.printf("class Tuple%s {public Object %s;}\n",i,s);}

My first time here. Hi there! I went for a Java8 lambda expression (aka an anonymous function).
Ungolfed version
s -> {
    s = "_0";
    for (int i = 0; i++ < 100; s += ",_" + i)
        System.out.printf("class Tuple%s {public Object %s;}\n", i, s);
}

To actually use this, as usual in Java8, you have to assign it to a variable of (or cast it to) an appropriate functional interface and then call its method; but technically, the function is only the lambda expression itself, so I am counting only that.
It also requires an input parameter, which saves me a couple bytes, since I can abuse it as a local variable without having to specify its type. I'm not sure if that's considered cheating, but to me it appears to be within the rules: I only saw people state that posting a function is allowed, not how that function needs to be invoked. :) And it doesn't actually read the parameter, so the function is still self-contained; you can pass any String to it, or even null, and it will still produce the correct output.
And here is how to use it:
import java.util.function.Consumer;

public class Main {
    public static void main(String[] args) {
        Consumer<?> r =
            s->{s="_0";for(int i=0;i++<100;s+=",_"+i)System.out.printf("class Tuple%s {public Object %s;}\n",i,s);}
        ;
        r.accept(null);
    }
}

Python 2, 96
def f(n=99):s=n and f(n-1)+',_'+`n`or"class Tuple%d {public Object _0";print s%-~n+';}';return s

Python 3, 98
def f(n=99):s=n and f(n-1)+',_%d'%n or"class Tuple%d {public Object _0";print(s%-~n+';}');return s

Usage:
f()

Ungolfed:
def javatuple(n=99):
    if n == 0:
        s = "class Tuple%d {public Object _0"
    else:
        s = javatuple(n-1) + ',_' + str(n)
    print(s%(n+1) + ';}')
    return s

formers:
103
r=range
for i in r(100):
 print"class Tuple%d {public Object _%s;}"%(i+1,',_'.join(`j`for j in r(i+1)))

108
def f(n=99):
 if n:f(n-1)
 print"class Tuple%d {public Object _%s;}"%(n+1,',_'.join(`i`for i in range(n+1)))

In your python2 answer the last line seems to be incomplete :
print f(3)
gives :
class Tuple1 {public Object _0;}
class Tuple2 {public Object _0,_1;}
class Tuple3 {public Object _0,_1,_2;}
class Tuple4 {public Object _0,_1,_2,_3;}
class Tuple%d {public Object _0,_1,_2,_3

@dieter The last line is a result. It's printed only when you run it interactively.

PowerShell, 63 bytes
1..100|%{"class Tuple$_ {public Object _$(0..--$_-Join",_");}"}

Try it online!
Two byte improvement of bulletprooffool's answer, who seems to be an abandoned account now.

CJam, 53 bytes
100{)"class Tuple"\" {public Object _"1$,",_"*";}
"}/

Try it here.

Groovy, 74 chars
"join()" is unbeatable... New solution, thanks to @yariash

100.times{println"class Tuple$it {public Object _${(0..it-1).join',_'};}"}

Old solution, 78 chars:
(1..100).each{println"class Tuple$it {public Object _${(0..it-1).join',_'};}"}

You can use 100.times{} instead of (1..100).each{}.

@yariash Thanks for the hint!

05AB1E, 43 bytes
тFNÝ„,_ý'_ì'Œº™'‚ÆN>'„à"ÿ Tupleÿ {ÿ ÿ ÿ;}"=

Try it online!

FALSE, 85 bytes
1[$100>~][$$0"class Tuple"\." {public Object "[$@$@=~][\$0>[","]?$"_".1+]#";}
"%%1+]#

Try it online!
Loops through 1-100 to get the Tuple number and then within that loops from 0 to currnum-1 to get underscores.

Vyxal, 36 bytes
`⟑↓ Tuɖ¾% {ƛḊ ß₂ %;}`₁ƛɾ\_$+\,j";v%⁋

Try it Online!
     ₁ƛ         ;    # map 1...100 to...
       ɾ             # 1...n
        \_$+         # Prepend underscores to each
            \,j      # Join by commas
               "     # Pair with n
`...`                # Compressed string `class Tuple% {public object %;}`
                 v%  # Formatted with (n, names)
                   ⁋ # Join by newlines

This beat the accepted answer. Is it proper on this site to change the accepted answer when it gets beaten?

@RayToal Yes, or you can not accept any answer. Your choice.

Lua, 128 106 Bytes
I'm still trying to find a way to directly work on a printed value, and not on a string.
Edit : Partially found it! I still need a string for the "_0,_1..." part, but it already is better :).
s=""for i=0,99 do s=(s..",_"..i):gsub("^,",s)print(("class Tuple"..(i+1).." {public Object ")..s..";}")end

Old 128 Bytes solution
s="class Tuple1 {public Object _0;}"print(s)for i=1,99 do s=s:sub(1,s:find";"-1):gsub("e%d+","e"..i+1)..",_"..i..";}"print(s)end

Ungolfed
s=""
for i=0,99
do
  s=(s..",_"..i)              -- concatenate s with ",_i"
      :gsub("^,",s)           -- remove the leading "," for ",_0"
  -- then print the concatenated string
  print(("class Tuple"..(i+1).." {public Object ")..s..";}")
end

Python 2, 96 Bytes
r=range
for i in r(1,101):print"class Tuple%d {public Object _%s;}"%(i,',_'.join(map(str,r(i))))

Thanks @DenkerAffe for the suggestion of using lambda.
Thanks @MathiasEttinger for the join idea.

You can golf this down to 111 bytes if you use a lambda in your reduce-call instead of defining a function for this: reduce(lambda x,y:'%s,_%s'%(x,y), r(i))

Or use ',_'.join(map(str,r(i))) for an extra 14 bytes removal (or 15, since you left an extra space in your reduce).

Julia, 77 bytes
for i=1:100;println("class Tuple$i {public Object _$(join(0:i-1,",_"));}")end

Python 3, 111 109 105 bytes
[print('class Tuple%s {public Object %s;}'%(i,','.join('_%i'%j for j in range(i))))for i in range(1,101)]

It's not the shortest thing in the world, I'm just participating.
edit1: down 2 bytes by removing 0, in first range
edit2: I was unnecessarily casting int to str instead of just using %i... Down to 105.

Welcome, nice start! If interested, try range(i) in place of range(0,i) or since you used range twice, try r=range early then reference each call with just r (as in the other Python solutions).

Ugh, I forgot range starts at 0 by default. Down 2 bytes, however, adding r=range; in the beginning results in exactly the same character count, I've tried that! :D

Same comment than I did to Dair: ',_'.join(map(str,range(i))) is 7 bytes shorter here.

Mathematica, 130 Bytes
{"class Tuple",ToString[#]," {public Object ",StringReplace[ToString[#-1&/@Range@#],{" "|"{" ->"_","}"->";}\n"}]}&/@Range[100]<>""

Hint: \n can be replaced with a literal newline character.

Scala, 85 Bytes
for(u<-1 to 100)println(s"class Tuple$u {public Object _${0 to u-1 mkString ",_"};}")

PHP, 112 bytes
<?php for($i=0;$i<100;$i++){$m.=$i==0?'_'.$i:',_'.$i;echo 'class Tuple'.($i+1).' {public Object '.$m.';}<br/>';}

You can save a few bytes by switching echo to double quotes where possible: <?php for($i=0;$i<100;$i++){$m.=$i==0?"_$i":",_$i";echo 'class Tuple'.($i+1)." {public Object $m;}\n";}

@Samsquanch Also, instead of echo 'class Tuple'.($i+1)." {public Object $m;}\n";, you can use echo'class Tuple',$i+1," {public Object $m;}\n";, which is 3 bytes shorter. Also, according to the meta, you can remove the <?php and assume that your code will be executed with php -r "code". Also, you can do for(;++$i<101;)echo"class Tuple$i {public Object ",$m=($m?"$m,":'')."_$i",";}\n"; for 80 bytes (you need to replace the \n with a real newline). Try it here: http://ideone.com/oOzKtP

Javascript, 112 110 bytes
2 bytes off thanks @CᴏɴᴏʀO'Bʀɪᴇɴ.
_=>[...Array(100)].map((x,i)=>`class Tuple${++i} {public Object ${[...Array(i)].map((y,j)=>'_'+j)};}`).join`
`

Ungolfed:
_=>                                         // anonymous function
    [...Array(100)].map((x,i)=>             // 100 times [0..99]
        `class Tuple${++i} {public Object   // Tuple index + 1
            ${[...Array(i)].map(            // (index + 1) times
                (y,j)=>'_'+j                // _+j with j in [0..index]
            )}                              // Array without join prints comma in between
        ;}`                                 // as literal string
    ).join`\n`                              // display array line by line

I think you can replace ${i+1} with ${i++} and replace ${[...Array(i++)] with ${[...Array(i)].

@CᴏɴᴏʀO'Bʀɪᴇɴ. Thanks, I've updated with ++i

Java, 116
(for the printing function only - according to some comments, this is in line with the rules)
import static java.lang.System.*;
public class T
{
    public static void main(String[] args)
    {
        T t = new T();
        t.p();
    }

    void p(){String s="_0";for(int i=0;i<100;){out.println("class Tuple"+ ++i+" {public Object "+ s + ";}");s+=",_"+i;}}
}

Seriously, 55 bytes
2╤R`;r"$'_+"£M',j@k"c╙ò T╒α%d {pu▐V Object %s;}"⌡%`M'
j

Hexdump (reversible with xxd -r):
00000000: 32e2 95a4 5260 3b72 2224 275f 2b22 c2a3  2...R`;r"$'_+"..
00000010: 4d27 2c6a 406b 2263 e295 99c3 b220 54e2  M',j@k"c..... T.
00000020: 9592 ceb1 2564 207b 7075 e296 9056 204f  ....%d {pu...V O
00000030: 626a 6563 7420 2573 3b7d 22e2 8ca1 2560  bject %s;}"...%`
00000040: 4d27 0a6a                                M'.j

Try it online!
Yes, that newline is supposed to be there.
Explanation (newline replaced with \n):
2╤R`;r"$'_+"£M',j@k"c╙ò T╒α%d {pu▐V Object %s;}"⌡%`M'\nj
2╤R                                                       push range [1,100]
   `                                              `M      map:
    ;r                                                      push a, range(a)
      "$'_+"£M                                              map:
       $'_+                                                   stringify, prepend "_"
              ',j                                           join with commas
                 @k                                         swap and push stack as list
                   "c╙ò T╒α%d {pu▐V Object %s;}"⌡           decompress, result is
                                                              "class Tuple%d {public Object %s;}"
                                                 %          string format
                                                    '\nj  join with newlines

Japt, 52 bytes
Lo £`cÓ? TÕà{X} \{puÞV Object {Xò ®'_+Z}&}` r&59d} ·

The ? should be the literal byte 0x95. Test it online!
Japt has:

concise syntax to help shorten your code.
string compression to help shorten it even further.
lots of bugs to make you want to throw your computer out the window.

I can't even use a semicolon in the string because the function it's wrapped in wants to return everything after the semicolon. This should only be 46 bytes:
Lo £`cÓ? TÕà{X} \{puÞV Object {Xò ®'_+Z};}`} ·

But alas, it is not. I'll see if I can fix these bugs over the next couple of hours.
How it works
Lo £       }  // Generate the range [0..100), and map each item X in this range to:
`cÓ? TÕà{X}   //  "class Tuple" + X +
\{puÞV Object //  "{public Object" +
{Xò ®'_+Z}    //   Create the range [0..X] and map each item Z to "_" + Z.
              //   Upon stringification, this automatically inserts the commas.
&}`           //  + "&}"
r&59d         //  Replace the "&" with String.fromCharCode(59), or ";".
·             // Join the result with newlines.

Bah! Ninjaed by ~18 months! You need to increment the first X, by the way.

Groovy, 97 bytes
(1..100).each{println "class Tuple${it} {public Object ${(0..it-1).collect{"_$it"}.join(',')};}"}

Try it online!

You can user 100.times{} instead of (1..100).each{}, which saves 4 bytes.

You can also omit braces in join (join','), remove space after println, and replace .collect{} with *.with{}

C++, 164 159 157 bytes (155 as function only)
#include <iostream>
#define o std::cout<<
int main(){int j,i=0;for(;i<100;++i){o"class Tuple"<<i+1<<" {public Object _0";for(j=0;++j<=i;)o",_"<<j;o";}\n";}}

This is a full program. You can save 2 bytes in function only form if you replace int main() with void f().
Run code in Ideone
Ungolfed, including macro expansion
#include <iostream>
int main()
{
    int j,i=0;
    for(;i<100;++i)
    {
        std::cout << "class Tuple"<< i+1 <<" {public Object _0";
        for(j=0;++j<=i;)
            std::cout << ",_" << j;
        std::cout << ";}\n";
    }
}

Welcome to Programming Puzzles & Code Golf! Nice first answer! Unless stated otherwise in the challenge, you can always use functions instead of full programs, so you can save a few bytes by doing that. You still have to include iostream tho, since its needed for the output.

You might also want to do j=1 in your for loop, thus not having the if(j).

@Ethiraric But of course! How sloppy of me. I guess I got too focused on the idea "remember to skip additions on first line" and ended up writing that too literally.

@sendaran Or even may be for(int j=0;++j<=i;) would save one more byte.

@Ethiraric Did that and shaved off an extra byte by extracting variable declarations, which enabled another empty expression.

, 44 chars / 55 bytes
⩥ṥⓜᵖ`э£ēÕ>rĕĠ#⦃$⦄ {public Object ⦃⩤$ⓜ⍘_+$⦄;}

Try it here (Firefox only).
Still amazing even without compression.
Explanation
⩥ṥⓜᵖ`э£ēÕ>rĕĠ#⦃$⦄ {public Object ⦃⩤$ⓜ⍘_+$⦄;} // implicit: ṥ=input
⩥ṥⓜ                                          // generate [0,100) to map over
    ᵖ                                         // push to stack:
     `э£ēÕ>rĕĠ#⦃$⦄                             // class Tuple[insert mapitem here]
                  {public Object ⦃⩤$ⓜ⍘_+$⦄;} // {public Object [insert [0,mapitem] here preceded by semicolons per item];}
                                             // implicit stack output

Pip, 53 51 bytes
LhP["class Tuple"++i" {public Object "'_.,iJ',";}"]

Try it online!
Explanation:
                        h is preinitialized to 100 and i to 0 (implicit)
L h                     Loop 100 times:
 P [                    Print the following list (with trailing newline):
    "class Tuple"
    ++i                 Increment i here so that its values run from 1 to 100
    " {public Object "
    ('_ . ,i) J ',      Range(i), concatenate "_" before each element, join on ","
    ";}"
   ]                    By default, lists are concatenated when printed

Idea: Maybe name your language so that it doesn't get confused with the pip utility

@LegionMammal978 Yeah, I realized that problem after the fact... but I think now it is what it is.  (When I came up with the acronym "Pip Isn't Python," it seemed so perfect...)

JavaScript (ES6), 85 bytes
s='_0';for(i=1;i<101;s+=',_'+i++)console.log(`class Tuple${i} {public Object ${s};}`)

Very nice! Could you add an explanation? Also, I believe you could save a single byte by moving s+=',_'+i++ into the last bit of the for.

Thanks! The for loop prints out each line whilst adding to the _0,_1,_2... string (stored in s) at the end of each iteration. Uses ES6 template strings to save a few bytes :P

(I meant [edit] an explanation into your question. Answers with them tend to be better-received)

Tcl, 107 bytes
time {set s "class Tuple[incr i] \{public Object \{"
set j 0
time {set s $s\_$j\;
incr j} $i
puts $s\}} 100

Try it online!

Tcl, 117 bytes
proc P n {set i 0;time {append s _$i\;;incr i} $n;set s}
time {puts "class Tuple[incr i] {public Object [P $i]}"} 100

Try it online!

Got the same 107 bytes count with: https://tio.run/##K0nO@f@/JDM3VaG6OLVEoVhBKTknsbhYIaS0ICc1OjMvuUghM1YhprqgNCknM1nBPykrNbkEyFfiAinPUtA15ELWrVIcEw/RlRUbY12roJLJVVBaAhavrVUwNDD4/x8A

Forth (gforth), 97 bytes
: f 101 1 do cr ." class Tuple"i 1 .r ." {public Object _0"i 1 ?do ." ,_"i 1 .r loop ." ;}"loop ;

Try it online!
Code Explanation
: f                           \ start a new word definition
  101 1 do                    \ start a loop from 1 to 100
    cr                        \ output a new line
    ." class Tuple"i 1 .r     \ output "class TupleN" where N is the loop index
    ." {public Object _0"     \ output "{public Object _0"
    i 1 ?do                   \ start a loop from 1 to the outer loop index
      ." ,_"i 1 .r            \ output ",_N" where N is the inner loop index
    loop                      \ end the inner loop
    ," ;}"                    \ output ";}"
  loop                        \ end the outer loop
 ;                            \ end the word definition

Python 2, 93 bytes
i=1;exec'print"class Tuple%s {public Object _"%i+",_".join(map(str,range(i)))+";}";i+=1;'*100

Try it online!
I rarely get to use exec in code golf, so I wasn't going to pass on this one!

K (ngn/k), 67 bytes
{1@,/("class Tuple";$x;" {public Object _";",_"/$!x;";}\n")}'1+!100

Try it online!
A bunch of string concatenations, with ",_"/$!x probably being the most interesting part.

Python 2, 82 bytes
s="class Tuple%d {public Object _0"
i=1
exec"print s%i+';}';s+=',_%d'%i;i+=1;"*100

Try it online!

Perl 5, 69 bytes
$p='{public Object _0';say("class Tuple$_ $p;}"),$p.=",_$_"for 1..100

Try it online!

Shouldn't the semicolon come before the curly bracket?

@RezNesX: Yes, thanks for the hint.

Regenerate, 66 bytes
(class Tuple(${$2+1}!1) \{public Object ($3,_${$2-1}!_0);\}
){100}

Attempt This Online!
Explanation
(class Tuple(...) \{public Object (...);\}\n){100}

Repeat this text 100 times, with the ellipses being as follows:
(${$2+1}!1)

This is capture group 2. Try to increment the value from the last time group 2 matched. If this is the first iteration, there isn't a previous match for group 2; in that case, use 1 instead.
($3,_${$2-1}!_0)

This is capture group 3. Try to match the same string group 3 matched last time, followed by ,_, followed by one less than the value we just matched for group 2. If this is the first iteration, there isn't a previous match for group 3; in that case, use _0 instead.

Perl5, 77 Bytes
$"=", ";for(0..100){push@o,"_$_";print"class Tuple$_\{public Object @o;\}\n"}

Also
for(0..100){$o.=$o?", _$_":"_$_";print"class Tuple$_\{public Object $o;\}\n"}

Welcome to Programming Puzzles and Code Golf! Please put your language together with the byte count in the title and format the code correctly (see my edit). Hope your have a great time here! :)

You don't have to put a backslash for the first accolade in the print : print"class Tuple$_{public Object $o;\}\n"}

You have an off-by-one error, the first line should be Tuple1 … _0;. The simple fix would be to put the push after the print and to make the print conditional on $_. …;for(0..100){$_&&print …;push@o,"_$_"}

MATL, 59 bytes
100:"'class Tuple%i {public Object %s}'@'_%i,'@:qYD59O(3$YD

EDITS

(May 16, 2016): to adapt to recent changes in the language, O needs to be replaced by J in the above code.
(September 29, 2017): the order of the inputs to YD has changed, which requires some modifications in the code.

The following link includes these changes.
Try it online!

Java 1.8, 163 Bytes
interface T{static void main(String[]a){String o="";for(int i=0;i<100;){o+=(i>0?",":"")+"_"+i;System.out.println("class Tuple"+(++i)+" {public Object "+o+";}");}}}

Ungolfed
interface T{
static void main(String[]a){
    String o="";
    for(int i=0;i<100;){
        o+=(i>0?",":"")+"_"+i;
        System.out.println("class Tuple"+(++i)+" {public Object "+o+";}");
    }
}
}

Unless stated otherwise in the challenge, you can always use functions instead of full prorgams. So youcan save all that static void main... stuff by using a Java8-lambda which implictly returns the result.

Old habits die hard ;)

AWK, 84 Bytes
BEGIN{m=" {public Object _0";for(i=1;i<101;){print"class Tuple"i m";}";m=m",_"i++}}
I do like playing with AWK.
If the script were placed in a file, tuple.awk, and called with a 1 line input, the BEGIN tag could be removed... e.g.
echo 1|awk -f tuple.awk
Not sure if any other golfing could be done to it.

Clojure, 103 chars
(map(fn[n](prn(str"class Tuple"n" {public Object "(join","(map #(+"_"%)(range n)))";}")))(range 1 101))

jq, 80 characters
(78 characters code + 2 characters command line option.)
range(1;13)|"class Tuple\(.) {public Object \([range(.)|"_\(.)"]|join(","));}"

Sample run:
bash-4.3$ bin/jq -nr 'range(1;101)|"class Tuple\(.) {public Object \([range(.)|"_\(.)"]|join(","));}"' | head
class Tuple1 {public Object _0;}
class Tuple2 {public Object _0,_1;}
class Tuple3 {public Object _0,_1,_2;}
class Tuple4 {public Object _0,_1,_2,_3;}
class Tuple5 {public Object _0,_1,_2,_3,_4;}
class Tuple6 {public Object _0,_1,_2,_3,_4,_5;}
class Tuple7 {public Object _0,_1,_2,_3,_4,_5,_6;}
class Tuple8 {public Object _0,_1,_2,_3,_4,_5,_6,_7;}
class Tuple9 {public Object _0,_1,_2,_3,_4,_5,_6,_7,_8;}
class Tuple10 {public Object _0,_1,_2,_3,_4,_5,_6,_7,_8,_9;}

On-line test (Passing -r through URL is not supported – check Raw Output yourself.)

Common Lisp, 106 bytes
(let(y)(dotimes(x 100)(push x y)(format t"class Tuple~d {public Object ~{_~d~^,~};}~&"(1+ x)(reverse y))))
Try it online!

Java, 166 Bytes
void m(){int c=0;while(c!=100){System.out.print("class Tuple"+(c+1)+" {public Object ");for(int i=0;i<c+1;i++)System.out.print(",_"+i);System.out.print(";}\n");c++;}}

Not bad for java, I mean calling main() alone is like 10+ bytes.. (plus long print statements)
(Non-Competetive) Java w/ Quick-Print! 137 bytes
import t.Q;
void m(){int c=0;while(c!=100){Q.p("class Tuple"+(c+1)+" {public Object ");for(int i=0;i<c+1;i++)Q.p(",_"+i);Q.p(";}\n");c++;}}

This one uses a quick library I have been thinking about making for a while(and just made) for shortening the long java print statements. It saves 29 bytes and that was just with 3 system.out.print() calls in the original. I've marked this one as non-competetive since the lib was made after the challenge was posted. Also, I don't know if we are allowed to use cheap little tricks like this and I felt bad about it. (Although in a way its fair since java has the longest print statements of any language I know).

Java 8, 184 194 bytes
(just to add void r() as mentioned in the comments)
void r(){IntStream.rangeClosed(1,100).mapToObj(i->IntStream.range(0,i).mapToObj(j->"_"+j).collect(Collectors.joining(",","class Tuple"+i+" {public Object ",";}"))).forEach(System.out::println);}

Ungolfed
void r(){ IntStream.rangeClosed(1, 100)
    .mapToObj(i -> IntStream.range(0, i).mapToObj(j -> "_" + j)
        .collect(Collectors.joining(",", "class Tuple" + i + " {public Object ", ";}")))
    .forEach(System.out::println); }

This code isn't even in a function or anything... You need to add like void r(){ around it }

Np. Why is your "," seperate from your "_" if the are right next to each other when you print? You may be able to cut some bytes by using this string: ",_"

@AshwinGupta "," is used as a delimiter for a Stream<String> of _0 _1 _2.... If I'm going to used ",_" as the delimiter, the mapToObj() conversion is longer (String::valueOf), and I'll need an additional _ at the end of " {public Object " to handle that.

oh okay I didn't know that. I'm a begginer programmer really. I just noticed.

Brachylog, 99 bytes
0:99eI+1=J,[J]:"class Tuple~w {public Object "w,(I{:0reI,(?I,F";";?'I,F","):"w~_"cr:[I]rw\};"}
"w\)

Scala, 119 bytes
I'm new to Scala and to codegolf, so nothing fancy.
for(i<-1 to 100){print("class Tuple"+i+" {public Object "); for(j<-0 to i-2) print("_"+j+","); print("_"+(i-1)+";}\n")}

Try online
More readable version:
for (i <- 1 to 100) {
  print("class Tuple" + i + " {public Object ")
  for (j <- 0 to i - 2) print("_" + j + ",")
  print("_" + (i - 1) + ";}\n")
}

BlitzMax, 81  bytes
While i<100s$:+",_"+i i:+1Print"class Tuple"+i+" {public Object "+s[1..]+";}"Wend

That's the whole program.
Non-Strict and without a Framework, so I can use variables without declaration and Print without having to import StandardIO. The String slicing operator comes in handy here, since it allows me to easily remove the superfluous comma at the beginning of each Object list.
Ungolfed version
While i < 100
    s$ :+ ",_" + i
    i :+ 1
    Print "class Tuple" + i + " {public Object " + s[1..] + ";}"
Wend

Python 3, 96 bytes
r=range
for i in r(1,101):print('class Tuple%d {public Object _0'%i,*r(1,i),sep=',_',end=';}\n')

Joining its expanded positional arguments from *range(1,i) using a custom separator ,_ and ending each line with ;}, Python 3's print() function happily does the job almost entirely on its own.

Haskell, 131 bytes
Call j.
import Data.List
j=mapM_(\n->putStrLn("class Tuple"++show n++" {public Object _"++intercalate",_"(map show[0..n-1])++";}"))[1..100]

Javascript ES6, 128 122 chars
for(s="class Tuple1 {public Object _0;}",q=0;q++<100;s=s.replace(/\d+(?!\d|,)( )?/g,(m,s)=>[q+1+s][+s]||m+",_"+q))alert(s)

Kotlin, 92 Bytes
fun j(){var s="_0";for(i in 1..100){println("class Tuple$i {public Object $s;}");s+=",_"+i}}

Try it online!
Ungolfed
fun j(){
    var s = "_0"
    for(i in 1..100){
        println("class Tuple$i {public Object $s;}")
        s+=",_"+i
    }
}

Perl 5, 68 66 bytes
$"=',_';say"class Tuple$_ {public Object _@{[0..$_++]};}"for 0..99

Try it online!

V, 47 bytes
iclass Tuple1 {public Object _0;}99ñÙ$hi,_Û

Try it online!

C++, 139 137 bytes
-2 bytes thanks to Zacharý
#include<iostream>
auto&p=printf;void j(){int i=1,k;for(;i<101;++i){p("class T%d{",i);for(k=0;k<i;++k)p("public Object v%d;",k);p("}");}}

Woah, nice golf! If you're straying from the source to generate equivalent valid java code (using public Object v0;public Object v1; instead of public Object _0,_1;, removing the space before {) then can't you change p("}\n") to p("}")? That raises another question, are you allowed to stray from the source?

@Zacharý actually, the code outputed is class T2{public Object v0;public Object v1}, so... I may try to use some printf magic to erase a full loop

Secondly, why are using  instead of  if you're just using printf? Unless I'm missing something, that may work.

C# (Visual C# Interactive Compiler), 110 109 bytes
int i;for(;i++<100;)Write($"class Tuple{i} {{public Object _{string.Join(",_",Enumerable.Range(0,i))};}}\n");

Saved a byte thanks to @dana
Try it online!

109 - declare i at the top level ;)

ink, 87 bytes
-(i)class Tuple{i} \{public Object <>
~temp k=-1
-(j)~k++
_{k}{k<i:,->j};\}
{i<100:->i}

Try it online!

Google Sheets, 142

A

1
=SEQUENCE(1,100 - Named Range A

2
;} - Named Range B

3
=ArrayFormula("class Tuple"&A&" {public Object "&SPLIT(REGEXREPLACE(TEXTJOIN(",",,IF(FLATTEN(A)>=A,"_"&A-1,)),",,+",B),B)&B

+1 for each named range.
Fun facts
Flatten is an undocumented function. Takes any matrix and makes it into a column vector. This includes row vectors too, so I used it instead of Transpose.

C (clang), 118 116 114 bytes
i,j,(*p)()=printf;main(){for(;j=i++<100&&p("class Tuple%d {public Object _0",i);p(";}\n"))for(;j<i;)p(",_%d",j++);}

Try it online!
Explanation
Note that I put a few statements into the for loop header, but the logic is the same.
Only works with clang. GCC errors on (*p)()=printf.
Ungolfed version:
// Define our loop counters....
int i, j;
// And our function pointer to printf (saves 4 bytes)
// Clang is generous enough to accept this monstrosity.
//
// Remember that f() in C represents an unspecified number of arguments,
// unlike C++.
// This is why you should always compile with -Wstrict-prototypes. :)
int (*p)() = printf;

int main()
{
    // Static and globals default to 0, so we don't need i=0.
    // Loop from 1 to 100.
    while (i++ < 100) {
        // Print the beginning of the string with printf.
        // For ease, of implementation, we print the initial _0 so we can
        // just print ",_j" later.
        p("class Tuple%d {public Object _0", i);
        // Print all the members starting at _1.
        // Loop j for 1 to i - 1. We skip the first iteration.
        for (j = 1; j < i;)
            // Print ",_j"
            p(",_%d", j++);
        // Print the end of the class declaration.
        p(";}\n");
    }
}

Thanks to ceilingcat for the -2 bytes by using the first for loop condition to set j!

brainfuck, 881 781 bytes
--->-[<++>-----]>+[[-]--[----->+<]>---.+++++++++.-----------.--[---<+>]<--..+[---->+<]>+++.----[-<+++>]<.-[--->+<]>++++.-----.----.-------.[-]<<+[>>->+<<<-]>>>[<<<+>>>-]<[[+]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[>>+>+<<<-]>>>[<<<+>>>-]<[[-]+>--[<+>++++++]<.>-[<+>-----]<.[-]<[-]<[>+>+<<-]>>[<<+>>-]]<[>>+>+<<<-]>>[<<+>>-]>>+[[-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[->[-]>>+>+<<<]]]]]]]]]<]>>[>]-[<+>-----]<--->>>]<<<[.[-]<<<]<<[>>+>-<<<-]>>+[<<+>>-]+>[<->[+]]<[+++[->++++++++<]>.>--[-->+++++<]>.[-<+++>]<-.+++++.+[->+++<]>.++++++++++.---.------.[-------<+++>]<<.>.-[----->+++<]>.++++++++.-----.--.-[---<+>]<--.<.>+[->+++<]>.+[--<+>]<.[-]<[-]<]<[-]<[>+>+<<-]>>[<<+>>-]<<<[>>->+<<<-]>>>[<<<+>>>-]<]+[--------->+<]>++.-[---<++>]<+.>++++++++++.[-]<[-]<[-]<<[>>+>+<<<-]>>>-[<<<+>>>-]<]

Try it online!

Pyth, 53 bytes
FNS*TTs["class Tuple"N" {public Object "j\,m+\_dUN";}

Try it online!

Pyth                                                   | Python 3
-------------------------------------------------------+-------------------------------------
FNS*TTs["class Tuple"N" {public Object "j\,m+\_dUN";}  |
FNS*TTs["class Tuple"N" {public Object "j\,m+\_dUN";}" |
-------------------------------------------------------+-------------------------------------
FNS*TT                                                 | for N in range(1, 101):
                                                       |     print(
      s[                                               |       "".join([
        "class Tuple"                                  |         "class Tuple",
                     N                                 |         str(N),
                      " {public Object "               |         " {public Object ",
                                        j\,            |         ",".join(
                                           m           |           map(
                                            +\_d       |             lambda d: "_" + str(d),
                                                UN     |             range(N)
                                                       |           )
                                                       |         ),
                                                  ";}" |         ";}"]
                                                       |       )
                                                       |     )

Zsh, 65 bytes
for i ({1..100})<<<"class Tuple$i {public Object _0$s;}"&&s+=,_$i

Attempt This Online!

Go, 173 bytes
import(."strings";."fmt")
func f(){for i:=1;i<101;i++{s:=[]string{}
for j:=0;j<i;j++{s=append(s,Sprint("_",j))}
Printf("class Tuple%d {public Object %s;}\n",i,Join(s,","))}}

Attempt This Online!
Prints to STDOUT.
Go 1.22+, 173 bytes
import(."strings";."fmt")
func f(){for i:=range 100{s:=[]string{}
for j:=range i+1{s=append(s,Sprint("_",j))}
Printf("class Tuple%d {public Object %s;}\n",i+1,Join(s,","))}}

Run this on the Go Playground!
Alternate solution using the new integer-range loops coming in Go 1.22.

Haskell, 102 bytes
putStr$[0..99]>>= \a->"class Tuple"++show(a+1)++" {public Object _0"++([1..a]>>=(",_"++).show)++";}\n"

As a program (107 bytes):
main=putStr$[0..99]>>= \a->"class Tuple"++show(a+1)++" {public Object _0"++([1..a]>>=(",_"++).show)++";}\n"

Explanation
putStr$ -- print it all
  [0..99]>>= \a->                 -- For each a from 0 to 99, make the
                                  -- following string, then concat
                                  -- it all together

    "class Tuple" ++ show (a + 1) -- class name (starts at Tuple1)

    ++" {public Object _0"        -- All Tuple classes start with a _0

    ++([1..a]>>=(",_"++).show)    -- If we're on TupleA,
                                  -- concat together ",_1", ",_2", etc.
                                  -- up to "_A"

    ++";}\n"

Java 112 bytes

void p(){String x="_0";for(int i=0;i<100;){out.format("class Tuple %d {public Object %s;}\n",++i,x);x+=",_"+i;}}

Un-golfed
import static java.lang.System.*;

public class I {
public static void main(String[] args){
    I m=new I();
    m.p();
}
    void p(){
    String x="_0";
    for(int i=0;i<100;){
        out.format("class Tuple %d {public Object %s;}\n", ++i, x);
        x+=",_"+i;
    }
}

}

You need to import System or use System.out.

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

sort: votes


text:
Tips for golfing in Subleq
Subleq is a programming language with only one instruction. Each instruction contains 3 parameters. Code and data space is the same. How it works:
A B C

A, B and C are signed ints. Instructions are executed in the next way:
*B = *B - *A
if(*B <= 0) goto C;

One post is one tip. Write your tips for Subleq here!
Online interpreter, assembler and C to Subleq converter

So, you could goto a number that isn't a multiple of 3 and therefore jump into an instruction, so to speak?

@Neil yes. you can

Third Argument in Output Command is Extra Memory
Subleq specifies output with the three word command x -1 y, where x is the address of the value to be output. Unlike other Subleq commands, execution will proceed to the next command in all cases and y is ignored.  This means it is available to be used for memory.
For example 0:2 -1 65 will print the "A" (CHAR(65)) stored in 2: and then proceed to 3:.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
Choose Scenes for a Movie
Introduction
Finally the movie company is financing your film. They have given you a maximum budget and they also set the running time of your movie.
Now you can start with the pre-production. You have a bunch of scenes already planned, but not all of them will fit into the budget and the film would get way too long as well. You know however the importance of each scene. You goal is to choose scenes, that the movie is not going to be too expensive, too long and mediocre.
Input
You get the running time and the budget the studio has approved:
[25, 10]

You have the list of scenes including running time, costs and the importance for each of them:
[ [5, 2, 4], [7, 1, 3] ]

If arrays aren't working for you, choose another input format that suits your best. Times are in minutes. Budget and costs are in millions of random currency. The importance is a range from [1–9]. All numbers are integers.
Output
Output the list of scenes to be included into the movie in the matter that:

The sum of importance is maximized.
The costs do not exceed the budget.
The length is within a ±5 minutes range of the approved running time.

The order of scenes is unimportant and doesn't need to be preserved.
You can output a list of numbers or an array. Your output can have a zero- or a one-based index:
[0,2,5] – 0, 2, 5 – 0 2 5
[1,3,6] – 1, 3, 6 – 1 3 6

It may be possible, that multiple solutions apply to any given input. You only need to find one.
Constraints

Scenes can't be shortened nor can they get cheaper.
Each scene can only be included once.

Requirements

Your program must finish in the time of the movie's actual length.
Input is accepted from STDIN, command line arguments, as function parameters or from the closest equivalent.
You can write a program or a function. If it is an anonymous function, please include an example of how to invoke it.
This is code-golf so shortest answer in bytes wins.
Standard loopholes are disallowed.

Movies
Your first movie is a documentary about a small town in Germany called Knapsack1. This city was resettled due to environmental constraints in the 70s:
Movie: [25, 10]

Scenes: [
    [5,  2, 4],
    [5,  5, 7],
    [7,  1, 3],
    [8,  5, 3],
    [12, 3, 9],
]

Possible solution with running time 22, budget 10 and an importance of 20:
0, 1, 4

Your next project is an episode of Fargo:
Movie: [45, 25]

Scenes: [
    [2,  1, 1],
    [8,  5, 9],
    [10, 6, 8],
    [10, 3, 6],
    [10, 9, 7],
    [11, 4, 3],
    [19, 5, 6],
]

Possible solution with running time 40, budget 24 and an importance of 31:
0, 1, 2, 3, 4

Finally here are the scenes for a movie where "M. McConaughey travels to a distant galaxy only to find out that Matt Damon got there first.":
Movie: [169, 165]

Scenes: [
    [5,  8,  2],
    [5,  20, 6],
    [6,  5,  8],
    [6,  10, 3],
    [7,  6,  5],
    [7,  9,  4],
    [7,  8,  9],
    [7,  9,  5],
    [8,  6,  8],
    [8,  8,  8],
    [8,  5,  6],
    [9,  5,  6],
    [9,  8,  5],
    [9,  4,  6],
    [9,  6,  9],
    [9,  8,  6],
    [9,  7,  8],
    [10, 22, 4],
    [10, 12, 9],
    [11, 7,  9],
    [11, 9,  8],
    [12, 11, 5],
    [15, 21, 7],
]

Possible solution with running time 169, budget 165 and an importance of 133:
1, 2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22

1 Any resemblance between the challenge's problem and actual locales is entirely coincidental.

MATLAB, 100 bytes
function X=o(m,s)
X=find(bintprog(-1*s(:,3),[s(:,2)';s(:,1)';-1*s(:,1)'],[m(2);m(1)+5;5-m(1)])==1);

The Binary Optimization problem is solved through the bintprog function, available in Matlab2013b; this function was replaced by intlinprog in newer Matlab versions.
Inputs are a vector (m), for movie constraints, and a matrix (s), for the scenes. In particular m is a two-element row vector [running_time budget], while s is a Nx3 matrix, where N is the number of the scenes and each row is made up of [running_time costs importance].

Python 3, 211 197 bytes
This solution brute-forces every combination of scenes starting from combinations of all scenes all the way down to combinations of just one scene, then selects the combination of scenes that has maximum importance. Brute-forcing was used as the cost in time was not particularly great, though it is definitely exponential. The output is zero-indexed.
from itertools import*
def m(t,b,s):l=len(s);r=range(l);f=lambda y,k:sum(s[q][k]for q in y);return max([j for i in r for j in combinations(r,l-i)if t-6<f(j,0)<t+6and f(j,1)<=b],key=lambda n:f(n,2))

Ungolfing:
import itertools
def movie_scenes(time, budget, scenes):
    length = len(s)
    r = range(length)
    f = lambda film_list, index: sum(scenes[q][index]for q in film_list)
    importance = 0
    possible_films = []
    for num_scenes in r:
        for film in itertools.combinations(r, num_scenes):
            run_time = f(film, 0)
            cost = f(film, 1)
            if time-6 < run_time < time+6 and cost <= budget:
                possible_films.append(film)
    return max(possible_films, key = lambda film: f(film, 2)

Thanks for being the first one coming up with one - actually even two - approaches not using built-ins and for drawing some attention to the question.

@insertusernamehere You're welcome :)

Ruby, 172 166 165 bytes
I should really start checking if the Ruby versions of my Python answers are golfier before  posting those Python answers. At any rate, this is the same brute-force approach to optimization as before. Any tips on golfing are welcome, including those that involve some actual optimization techniques.
->t,b,s{l=s.size;r=[*0...l];f=->y,k{y.reduce(0){|z,q|z+s[q][k]}};v=[];r.map{|i|r.combination(l-i).map{|j|v<<j if(t-5..t+5)===f[j,0]&&f[j,1]<=b}};v.max_by{|n|f[n,2]}}

Ungolfed:
def movie(time, budget, scenes)
  len = scenes.size
  range = [*0...len]
  f = -> y,k {y.reduce(0) {|z,q| z + s[q][k]}}
  potential_films = []
  range.map do |i|
    range.combination(len-i).map do |j|
    # len - i because range being combined must be 0..(len-1) as these are indices
    # but the number of elements in the combinations must be 1..len
      if (time-5..time+5).include?(f[j,0]) && f[j,1] <= budget
        potential_films << j
      end
    end
  end
  return potential_films.max_by{|n|f[n,2]}
end

Haskell, 125 bytes
(m,n)&s=snd$maximum[(sum i,q)|q<-filter(>=0)<$>mapM(:[-1])[0..length s-1],(t,b,i)<-[unzip3$map(s!!)q],sum b<=n,abs(sum t-m)<6]

Usage example: (25,10) & [(5,2,4),(5,5,7),(7,1,3),(8,5,3),(12,3,9)] -> [0,1,4].
How it works:
let m be the running time
    n    the budget
    s    the list of scenes

    q<-filter ... s-1]                         -- loop q through the list of
                                               -- subsequences of the indices of s
                                               -- (0 based) -- details see below
                          map(s!!)q            -- extract the elements for the
                                               -- given indices
                    unzip3                     -- turn the list of triples
                                               -- into a triple of lists
          (t,b,i)<-[               ]           -- bind t, b and i to the lists
                                    sum b<=n   -- keep q if the sum of budgets <= n
                              abs(sum t-m)<6   -- and the time is within range
  (sum i,q)                                    -- for all leftover q make a pair
                                               -- (overall importance, q)
sum$maximum                                    -- find the maximum and drop
                                               -- overall importance

subsequence building:

                   [0..length s-1]         -- for all indices i of s
            (:[-1])                        -- make a list [i,-1]
        mapM                               -- and make the cartesian product
                                           -- e.g. [0,1] -> [[0,-1],[1,-1]] ->
                                           -- [[0,1],[0,-1],[-1,1],[-1,-1]]
filter(>=0)<$>                             -- drop all -1
                                           -- -> [[0,1],[0],[1],[]]

Found the subsequence trick a while ago in an answer of @xnor. It's shorter than subsequence which requires import Data.List.